说了设备正常,也能读到数据。你提供的代码里socket.in_waiting 的返回值为空
时间: 2024-02-13 10:05:13 浏览: 72
android 等待控件 空数据控件 网络异常
5星 · 资源好评率100%
如果设备正常且能够读到数据,而 `socket.in_waiting` 的返回值为空,那么可能是因为在调用 `read_holding_registers` 方法时,已经将数据读取出来了,导致后面的 `socket.read` 方法无法读取到数据。
可以尝试将 `socket.read` 方法放在 `read_holding_registers` 方法之前,或者在 `read_holding_registers` 方法中指定 `silent=True` 参数,使其在读取完数据后不发送 Modbus ACK 响应报文,这样后面的 `socket.read` 方法就可以读取到数据了。例如:
```
result = client.read_holding_registers(
address=0,
count=1,
unit=1,
silent=True, # 不发送 ACK 响应报文
)
response = socket.readall() # 读取所有可用的数据
```
阅读全文