diff --git a/pymodbus/diag_message.py b/pymodbus/diag_message.py index 82498a154..705b01977 100644 --- a/pymodbus/diag_message.py +++ b/pymodbus/diag_message.py @@ -146,7 +146,7 @@ def encode(self): packet += self.message.encode() elif isinstance(self.message, bytes): packet += self.message - elif isinstance(self.message, list): + elif isinstance(self.message, (list, tuple)): for piece in self.message: packet += struct.pack(">H", piece) elif isinstance(self.message, int): diff --git a/test/test_diag_messages.py b/test/test_diag_messages.py index 971e641e5..dda7d7a87 100644 --- a/test/test_diag_messages.py +++ b/test/test_diag_messages.py @@ -119,12 +119,23 @@ class TestDataStore: (GetClearModbusPlusResponse, b"\x00\x15\x00\x04" + b"\x00\x00" * 55), ] + def test_diagnostic_encode_decode(self): + """Testing diagnostic request/response can be decoded and encoded.""" + for msg in (DiagnosticStatusRequest, DiagnosticStatusResponse): + msg_obj = msg() + data = b"\x00\x01\x02\x03" + msg_obj.decode(data) + result = msg_obj.encode() + assert data == result + def test_diagnostic_requests_decode(self): """Testing diagnostic request messages encoding""" for msg, enc, _ in self.requests: handle = DiagnosticStatusRequest() handle.decode(enc) assert handle.sub_function_code == msg.sub_function_code + encoded = handle.encode() + assert enc == encoded def test_diagnostic_simple_requests(self): """Testing diagnostic request messages encoding"""