Arduino上通过 Modbus接收4个16 进制字节数据
作者:野牛程序员:2024-05-29 19:06:20Arduino阅读 3183
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 板子型号简介
