Arduino上通过 Modbus接收4个16 进制字节数据
作者:野牛程序员:2024-05-29 19:06:20Arduino阅读 2568
Arduino上通过 Modbus接收4个16 进制字节数据
将接收到的 4 个 16 进制字节数据存储在一个数组中,代码实现如下:
#include <ModbusMaster.h> // 创建一个 ModbusMaster 对象 ModbusMaster node; void setup() { // 初始化串口 Serial.begin(9600); // 初始化 Modbus 节点,假设使用串口 1 node.begin(1, Serial); } void loop() { // 假设从地址 0 读取 2 个寄存器(每个寄存器 2 个字节,共 4 个字节) uint8_t result = node.readHoldingRegisters(0, 2); if (result == node.ku8MBSuccess) { // 获取寄存器值 uint16_t highWord = node.getResponseBuffer(0); // 高字节 uint16_t lowWord = node.getResponseBuffer(1); // 低字节 // 将高字节和低字节组合成 32 位整数 uint32_t combinedValue = (uint32_t(highWord) << 16) | lowWord; // 输出 10 进制表示 Serial.print("Received 32-bit value: "); Serial.println(combinedValue); // 输出 16 进制表示 Serial.print("Received 32-bit value: 0x"); Serial.println(combinedValue, HEX); } // 短暂延时 delay(1000); }
字节顺序:确保高字节和低字节的顺序正确,即高字节在前,低字节在后。
读取寄存器:使用 readHoldingRegisters
函数从 Modbus 从设备读取 2 个寄存器(每个寄存器 16 位,共 32 位,即 4 个字节)。
组合高字节和低字节:将读取到的两个 16 位寄存器值组合成一个 32 位整数。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:干支释义
- 下一篇:Arduino 板子型号简介