当前位置: 首页 > article >正文

C# Modbus RTU通讯回顾

涉及技术:

1.使用NMdbus4 库

2.ushort[]转int

记得之前刚学习的时候,是ushort[] → Hex字符串→byte[] → 翻转byte[] →BitConverter.ToInt32(),饶了一大圈;实际上可以直接转;这里也有小细节:使用BitConverter之前要翻转字节数组,因为BitConverter是小端存储处理方式;

这些方法我都有记录,参见:

C#使用串口或其他通信接收到的字节数据处理方式-CSDN博客

C#short 、ushort、 byte、 byte[]转换分析_c# ushort-CSDN博客

1.使用NModbus4 注意事项:

1.地址参数为ushort类型,原因可能在这:

 2.一个寄存器是16位,只能保存16位数据,有些时候要读出来32位的数据,就要连着读两个寄存器;

3.返回数据是ushort[]类型,如果读的是16位数据,结果就是一个长度的ushort数组,读32位的话结果就是长度为2的ushort数组.....

4.ushort[]与int互转:

    public static ushort[] Int2Ushorts(int res)
    {
        ushort ust1 = (ushort)(res >> 16);
        ushort ust2 = (ushort)res;
        return new ushort[] { ust1, ust2 };
    }



	public static int UShorts2Int(ushort[] res)
	{

        //如果确定长度的话,一行代码 : return (int)result[0] << 16 | (int)result[1];
		if (res.Length > 1)
		{
			int high = res[0];
			int low = res[1];
			int value = (high << 16) + low;
			return value;
		}

		return (int)res[0];
	}

后面想起来再补充。


http://www.kler.cn/a/381659.html

相关文章:

  • 完整微服务设计 功能实现
  • IntelliJ IDEA 快捷键大全:提升开发效率的利器
  • Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
  • java后端传时间戳给前端的三种方式
  • 项目中如何排查JVM问题?
  • SAP HCM 考勤时间冲突到分 源码分析
  • Rust常用数据结构教程 序列
  • [SDX35]SDX35 dtsi配置GPIO_108不生效问题分析及解决方案
  • 使用 AMD GPU 的 ChatGLM-6B 双语语言模型
  • 120. gltf工厂模型设置发光描边
  • SpringBoot2~~~
  • 什么是区块链中的不可能三角?
  • MySQL数据迁移到SQLServer数据库
  • 数据分析的基本过程
  • 数据中台一键大解析!
  • 《常用深度学习神经网络及其原理与应用场景》
  • [出海记录]开发新手的第 11 个站点上线
  • mysql 和 java 对应数据类型
  • 【java】ArrayList与LinkedList的区别
  • 健身中心运营优化:SpringBoot管理系统
  • 华为HarmonyOS打造开放合规的广告生态 - Banner广告
  • 开源ISP(Infinite-ISP)介绍
  • Rust 力扣 - 2841. 几乎唯一子数组的最大和
  • Ubuntu 20.04 部署向量数据库 Milvus + Attu
  • 【数据结构】哈希思想详解
  • 工作流之Flowable