【发布时间】:2022-10-26 03:04:33
【问题描述】:
我从 modbusTCP 服务器中提取数据,但是当我应该收到一个负值时,它显示为一个大数字。
self.export = self.c.read_holding_registers(37113, 2)[1]
我知道这与签名或未签名有关,但我真的很难解决它。
print("export: " + "{:02f}W".format(self.inverter.export))
print("exportBytes: " + "{:16b}W".format(self.inverter.export))
print("export: " + "{:02f}W".format(self.inverter.export))
print("export 1: " + "{:16b}W".format(1))
print("export-1: " + "{:16b}W".format(-1))
打印出来
export: 59142.000000kW
exportBytes: 1110011100000110kW
export: 59142.000000kW
export 1: 1kW
export-1: -1kW
有什么猜测吗?
【问题讨论】:
-
type(self.inverter.export)返回什么? -
它返回 <class 'int'>
-
你如何从
modbusTCP获取数据?如果您将其作为字节获取,那么也许您应该使用struct将其转换为整数。或者,也许您应该编写自己的函数将其转换为整数。
标签: python unsigned pymodbustcp