我具有串行数据输出到一个Arduino,其中I转换和缩放输出到超过的Modbus TCP被发送到我的覆盆子裨那里,然后除鳞,并加入到一个MySQL表三公制电池监视器。我,目前使用PHP来做到这一点,但想要将其移动到python,感觉它会比PHP更有效。
数据表示当太阳下山后电池正在放电时,系统使用的电流将变为负值。
我通过乘以10来缩放数据,并转换为无符号的16位整数以符合Modbus规范。
我需要知道我可以如何将这个无符号的16位整数更改为一个带符号的浮点数以添加到我的数据库中。
例如,这是来自的原始数据Modbus 65365未缩放的等效值应为-17.2 AmpHrs。
任何援助与此将不胜感激。
这是如何我将其转换在Arduino的
cmdData[k] = '\0'; // add termination NULL char for float conversion:
cmdFloat = atof(cmdData); // convert char array upto NULL to float:
cmdValue = int(cmdFloat * 10); // convert to int16_t and scale up by 10:
amp_hours = (uint16_t)cmdValue;
Serial.print("Amp Hours: ");
}
Serial.println(cmdFloat); //serial print the float value
}
在蟒我试图
amphours = usamphours/10 如果(amphours &为0x80000000): amphours = -0x100000000 + amps
也试过
amphours = amphours & 0xffffffff的
非其中工作
+0
告诉我们你已经尝试过 –