From f4d4ba93e5d356d602cb10ae9953078c6e0ad8ee Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 19 Feb 2025 17:19:13 +0100 Subject: [PATCH] Modbus: Handling of lost connection during receive fixed --- src/pyhoff/modbus.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pyhoff/modbus.py b/src/pyhoff/modbus.py index c7b0bbd..80b2e90 100644 --- a/src/pyhoff/modbus.py +++ b/src/pyhoff/modbus.py @@ -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:]