From 901471c9fc199f66ac6a0d0faf564ab2d3bb02f2 Mon Sep 17 00:00:00 2001 From: Joel Bender Date: Fri, 31 Mar 2017 15:26:20 -0400 Subject: [PATCH] pass along the register count for reading input registers and decode the results like holding registers --- modpypes/__init__.py | 2 +- modpypes/client.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modpypes/__init__.py b/modpypes/__init__.py index f035f12..101c940 100755 --- a/modpypes/__init__.py +++ b/modpypes/__init__.py @@ -2,7 +2,7 @@ __author__ = 'Joel Bender' __email__ = 'joel@carrickbender.com' -__version__ = '0.2.6' +__version__ = '0.2.7' from . import pdu from . import app diff --git a/modpypes/client.py b/modpypes/client.py index 7f4ceb7..9291597 100644 --- a/modpypes/client.py +++ b/modpypes/client.py @@ -115,10 +115,10 @@ class ConsoleClient(ConsoleCmd): req = ReadCoilsRequest(register - 1, rcount) elif registerType == 1: # discrete inputs - req = ReadDiscreteInputsRequest(register - 1, 1) + req = ReadDiscreteInputsRequest(register - 1, rcount) elif registerType == 3: # input register - req = ReadInputRegistersRequest(register - 1, 1) + req = ReadInputRegistersRequest(register - 1, rcount) elif registerType == 4: # holding register req = ReadMultipleRegistersRequest(register - 1, rcount) @@ -163,6 +163,13 @@ class ConsoleClient(ConsoleCmd): elif isinstance(resp, ReadInputRegistersResponse): print(" ::= " + str(resp.registers)) + for dtype, codec in ModbusStruct.items(): + try: + value = codec.unpack(resp.registers) + print(" " + dtype + " ::= " + str(value)) + except Exception as err: + if _debug: ConsoleClient._debug("unpack exception %r: %r", codec, err) + elif isinstance(resp, ReadMultipleRegistersResponse): print(" ::= " + str(resp.registers))