AttributeError: 'ModbusSerialClient' object has no attribute 'last_response'
时间: 2023-06-21 21:23:05 浏览: 145
很抱歉,我的回答中有误。实际上,`ModbusSerialClient` 对象没有 `last_response` 属性。如果要获取完整的 Modbus 报文,可以使用 `ModbusSerialClient` 对象的 `_last_frame` 属性。以下是修改后的示例代码:
```python
from pymodbus.client.sync import ModbusSerialClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
# 创建Modbus串口客户端
client = ModbusSerialClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600)
# 连接到Modbus设备
client.connect()
# 读取Modbus信号
response = client.read_holding_registers(address=0, count=2, unit=1)
# 解码Modbus信号
decoder = BinaryPayloadDecoder.fromRegisters(response.registers, Endian.Big)
data = decoder.decode_32bit_float()
# 获取完整的Modbus报文
full_message = client._last_frame
# 断开Modbus连接
client.close()
```
在这个示例代码中,我们使用 `_last_frame` 属性来获取完整的 Modbus 报文。请注意,这是一个私有属性,因此在实际使用中请谨慎使用。
阅读全文