我正在为Modbus RTU编写一些代码,但是在转换接收到的数据时遇到问题。 下面是代码,我能够与从设备通信,但是我收到的信息根本没有意义。 从站地址为2000(十六进制值),数据块为2,十六进制响应为Float-Big Endian(ABCD)。 但是,当我通过串行打印查看时,这没有任何意义。任何可以帮助的人将不胜感激。
void loop()
{
uint8_t j, result;
uint16_t data[6];
// slave: read (6) 16-bit registers starting at register .. to RX buffer , this address is in Decimal, so convert hex to decimal to use correct address
result = node.readHoldingRegisters(8192, 2);
// do something with data if read is successful
if (result == node.ku8MBSuccess)
{
for (j = 0; j < 6; j++)
{
data[j] = node.getResponseBuffer(j);
Serial.println(data[j]);
}
}
delay(1000);
}