Modbus: Handling of lost connection during receive fixed

This commit is contained in:
Nicolas 2025-02-19 17:19:13 +01:00
parent b2e51581bf
commit f4d4ba93e5
1 changed files with 8 additions and 1 deletions

View File

@ -425,10 +425,15 @@ class SimpleModbusClient:
buffer = bytes()
while len(buffer) < number_of_bytes:
try:
buffer += self._socket.recv(number_of_bytes - len(buffer))
tx_data = self._socket.recv(number_of_bytes - len(buffer))
except socket.error:
return bytes()
if tx_data:
buffer += tx_data
else:
return bytes()
if self.debug:
print(f'<- Received: {' '.join(hex(b) for b in buffer)}')
@ -512,6 +517,8 @@ class SimpleModbusClient:
if data[0] > 0x80:
self.last_error = f'return error: {_modbus_exceptions.get(data[1], '')} ({data[1]})'
if self.debug:
print(self.last_error)
return bytes()
return data[1:]