我使用 pymodbus 读取和解码 float_32 值。
之前,我用下面的代码简单地解码它:
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
cli = ModbusTcpClient('an-IP')
cli.connect()
req = cli.read_holding_registers(<hex-address>, count=4)
dec = BinaryPayloadDecoder.fromRegisters(req.registers, endian=Endian.Little)
print(dec.decode_32bit_float())
但最近我发生了这个错误:
TypeError: fromRegisters() got an unexpected keyword argument 'endian'
[更新]
我认为较新的版本pymodbus
已被修改(endian
参数已被弃用):
参考:看起来参数已更改,但文档未更改
然后我将这一行更改如下:
dec = BinaryPayloadDecoder.fromRegisters(
req.registers,
byteorder=Endian.Big,
wordorder=Endian.Little)
问题:
现在我想检查 pymodbus 版本以了解必须使用哪个版本的解码。