|
modbus读取按照字来读,我在MODBUS SLAVE内模拟,地址0 为一个int,读取正常,但是地址1、2位一个32位的浮点数(已经在slave端设置,高低字格式为ABCD),
如何才能将读取到的1、2两个字的内容合并成一个float (abcd),在arduino的体现出?
而非将slave端的浮点放大1000倍当整数传输,再在arduino上除以1000来恢复?
下面读到的float L只是高低字中的一半,当做int来读的,再转了float,值为16708.00,在LCD2004显示,,,,
谢谢高手为我解答
#include<ModbusMaster.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
uint8_t result;
ModbusMaster node;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600,SERIAL_8E1);
node.begin(1,Serial1);
lcd.begin(20, 4);
}
void loop()
{
result = node.readHoldingRegisters(0,3);
if (result == node.ku8MBSuccess)
{ lcd.setCursor(0, 0);
lcd.print("modbus_test_data:");
lcd.setCursor(0, 1);
lcd.print( node.getResponseBuffer(0), DEC );
lcd.setCursor(0, 2);
lcd.print("TEST_REAL_VALUE" );
float L = node.getResponseBuffer(1);
lcd.setCursor(0, 3);
lcd.print(L);
|
|