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];
	}

后面想起来再补充。

相关推荐
GreenTea5 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_20025 小时前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
土司大王6 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹6 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王6 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
罗西的思考8 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
小哈里9 小时前
【知识】从学科到实践:自然・工程・社科・人文|算法・研发・产品・品牌设计
程序人生·算法·产品·设计·工程
小π军10 小时前
最大重叠区间数量
数据结构·算法
镜像视界(浙江)科技有限公司10 小时前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
a1879272183110 小时前
【算法】双指针与滑动窗口(二):滑动窗口——吃进、判定、吐出
算法·leetcode·双指针·滑动窗口·原理·模板·算法讲解