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

后面想起来再补充。

相关推荐
悠悠~飘1 分钟前
18.PHP基础-递归递推算法
算法·php
pilgrim5323 分钟前
结合 Leetcode 题探究KMP算法
算法·leetcode
罗义凯43 分钟前
其中包含了三种排序算法的注释版本(冒泡排序、选择排序、插入排序),但当前只实现了数组的输入和输出功能。
数据结构·c++·算法
kevien_G11 小时前
JAVA之二叉树
数据结构·算法
syt_biancheng2 小时前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
二进制的Liao2 小时前
【编程】脚本编写入门:从零到一的自动化之旅
数据库·python·算法·自动化·bash
自然数e2 小时前
C++多线程【线程管控】之线程转移以及线程数量和ID
开发语言·c++·算法·多线程
云在Steven3 小时前
在线确定性算法与自适应启发式在虚拟机动态整合中的竞争分析与性能优化
人工智能·算法·性能优化
前进的李工3 小时前
LeetCode hot100:234 回文链表:快慢指针巧判回文链表
python·算法·leetcode·链表·快慢指针·回文链表
sin_hielo4 小时前
leetcode 3228
算法·leetcode