我尝试使用ModbusTcpClient从传感器获取数据,如下所示
client = ModbusTcpClient('xx.xx.xx.xx', port=502)
connection = client.connect()
request = client.read_input_registers(220,2, unit=51, debug=False)
result = request.registers
print(result)
有了这个结果,我得到了一个无符号十进制的列表。我怎么把这个转换成long int或者swapped long
我从上面的代码中得到的结果
2023-04-24 12:18:59,856 MainThread DEBUG transaction :297 RECV: 0x0 0x2 0x0 0x0 0x0 0x7 0x33 0x4 0x4 0x0 0x28 0x8a 0x23
2023-04-24 12:18:59,857 MainThread DEBUG socket_framer :147 Processing: 0x0 0x2 0x0 0x0 0x0 0x7 0x33 0x4 0x4 0x0 0x28 0x8a 0x23
2023-04-24 12:18:59,857 MainThread DEBUG factory :266 Factory Response[ReadInputRegistersResponse: 4]
2023-04-24 12:18:59,858 MainThread DEBUG transaction :454 Adding transaction 2
2023-04-24 12:18:59,859 MainThread DEBUG transaction :465 Getting transaction 2
2023-04-24 12:18:59,859 MainThread DEBUG transaction :224 Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
[40, 35363]
但是我需要**[40,35363]显示为swapped long为2656849**
谢啦
编辑:
我已经用下面的代码回答了
2条答案
按热度按时间8ehkhllq1#
正如注解中所指出的,我希望结果是
2656803
(this calculator对于检查可能的编码很有用)。有几个选择;unpack经常使用:
另外,pymodbustcp提供了一些实用程序可以提供帮助(请参阅此示例)。这使您可以执行以下操作:
nzk0hqpo2#
所以我通过下面的代码实现了这一点
希望这能帮上忙。...