From 5c42c1264d5e8279910e4ef90e1bd0a4977e1a2e Mon Sep 17 00:00:00 2001 From: Alex Ruddick Date: Mon, 19 Feb 2024 18:24:34 -0600 Subject: [PATCH 1/2] renamed to inter_byte_timeout in pyserial 3.0 --- doc/source/repl.rst | 2 +- pymodbus/client/serial.py | 6 +++--- test/sub_client/test_client_sync.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/source/repl.rst b/doc/source/repl.rst index d68a4623c..a598c7904 100644 --- a/doc/source/repl.rst +++ b/doc/source/repl.rst @@ -167,7 +167,7 @@ SERIAL client.get_stopbits Number of stop bits. client.get_timeout Serial Port Read timeout. client.idle_time Bus Idle Time to initiate next transaction - client.inter_char_timeout Read Only! + client.inter_byte_timeout Read Only! client.is_socket_open c l i e n t . i s s o c k e t o p e n client.mask_write_register Mask content of holding register at `address` with `and_mask` and `or_mask`. client.method Read Only! diff --git a/pymodbus/client/serial.py b/pymodbus/client/serial.py index 7c84f3fd9..fccfe46ff 100644 --- a/pymodbus/client/serial.py +++ b/pymodbus/client/serial.py @@ -150,7 +150,7 @@ def run(): """ state = ModbusTransactionState.IDLE - inter_char_timeout: float = 0 + inter_byte_timeout: float = 0 silent_interval: float = 0 def __init__( @@ -190,7 +190,7 @@ def __init__( if baudrate > 19200: self.silent_interval = 1.75 / 1000 # ms else: - self.inter_char_timeout = 1.5 * self._t0 + self.inter_byte_timeout = 1.5 * self._t0 self.silent_interval = 3.5 * self._t0 self.silent_interval = round(self.silent_interval, 6) @@ -214,7 +214,7 @@ def connect(self): exclusive=True, ) if self.strict: - self.socket.interCharTimeout = self.inter_char_timeout + self.socket.inter_byte_timeout = self.inter_byte_timeout self.last_frame_end = None except serial.SerialException as msg: Log.error("{}", msg) diff --git a/test/sub_client/test_client_sync.py b/test/sub_client/test_client_sync.py index 1f4e7fa3f..078b41643 100755 --- a/test/sub_client/test_client_sync.py +++ b/test/sub_client/test_client_sync.py @@ -354,7 +354,7 @@ def test_basic_sync_serial_client(self, mock_serial): # rtu connect/disconnect rtu_client = ModbusSerialClient("/dev/null", framer=Framer.RTU, strict=True) assert rtu_client.connect() - assert rtu_client.socket.interCharTimeout == rtu_client.inter_char_timeout + assert rtu_client.socket.inter_byte_timeout == rtu_client.inter_byte_timeout rtu_client.close() assert str(client) == "ModbusSerialClient /dev/null:0" From 282d8574890eeaa115dcd520f94bfc271da05ff9 Mon Sep 17 00:00:00 2001 From: Alex Ruddick Date: Mon, 19 Feb 2024 19:42:07 -0600 Subject: [PATCH 2/2] is_open is available with pyserial > 3.0 --- pymodbus/client/serial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymodbus/client/serial.py b/pymodbus/client/serial.py index fccfe46ff..67b522be4 100644 --- a/pymodbus/client/serial.py +++ b/pymodbus/client/serial.py @@ -285,7 +285,7 @@ def recv(self, size): def is_socket_open(self): """Check if socket is open.""" if self.socket: - return self.socket.is_open if hasattr(self.socket, "is_open") else self.socket.isOpen() + return self.socket.is_open return False def __repr__(self):