AttributeError: 'ModbusSerialClient' object has no attribute 'transaction_id'
时间: 2023-06-21 08:20:45 浏览: 106
非常抱歉,我再次犯了错误。在 pymodbus 2.4.x 版本中,ModbusSerialClient 对象不再有 transaction_id 属性。你可以使用 ModbusSerialClient 对象的 framer 属性的 transaction_id 属性来获取 transaction id。以下是修改后的代码:
```
from pymodbus.client.sync import ModbusSerialClient
from pymodbus.transaction import ModbusRtuFramer
client = ModbusSerialClient(
method='rtu',
port='/dev/ttyUSB0',
baudrate=9600,
timeout=2,
framer=ModbusRtuFramer,
)
client.connect()
# 读取保持寄存器
result = client.read_holding_registers(
address=0,
count=1,
unit=1,
)
# 获取完整的 Modbus RTU 报文
socket = client.socket
response_data = socket.in_waiting
response = socket.read(response_data)
request = client.framer.buildPacket(client.framer.transaction_id, client.address, result)
print('Request: ', request)
print('Response: ', response)
client.close()
```
在这个示例代码中,我们使用 client.framer.transaction_id 属性获取 Modbus RTU 报文的 transaction id。你可以根据需要修改这个示例代码,以适应你的应用场景。再次感谢你的指正和耐心。