我正在尝试使用 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)
有了这个结果,我得到了一个unsigned decimal的列表。我如何将其转换为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
谢谢,
编辑:
我已经用下面的代码回答了
所以我通过以下代码实现了这一点,
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
decoder = BinaryPayloadDecoder.fromRegisters(request.registers, byteorder=Endian.Big, wordorder=Endian.Big)
active_power_w = decoder.decode_32bit_int()
print(active_power_w)
希望这有帮助...!