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互转:

cs 复制代码
    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];
	}

后面想起来再补充。

相关推荐
通信小呆呆2 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0443 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
何以解忧,唯有..4 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅10054 小时前
【leetcode】88.合并两个有序数组js
算法
生成论实验室5 小时前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres8215 小时前
算法复键——树状数组
数据结构·算法
H178535090965 小时前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks
不会就选b5 小时前
算法日常・每日刷题--<二分查找>3
算法
2601_962072556 小时前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos