diff --git a/tests/query_device.py b/tests/query_device.py index ba272f0..51d07af 100755 --- a/tests/query_device.py +++ b/tests/query_device.py @@ -122,6 +122,7 @@ for name, number in all_registers.items(): if action == 'read' or action == 'all': print('---- Register readout ----') for register in register_name + register_number: + signed = False if isinstance(register, str): reg_name = register if reg_name in all_registers: @@ -134,7 +135,9 @@ if action == 'read' or action == 'all': # try reverse lookup reg_name = all_register_numbers[reg_number] if reg_number in all_register_numbers else '' try: - result = int(s.read_register(reg_number)) + signed = '_signed' in reg_name + print(f'DEBUG: register {reg_name} is {signed} (signed)') + result = int(s.read_register(reg_number, signed=signed)) except: result = 'N/A' print(f'{reg_number : <10} {result : <10} {reg_name}') diff --git a/tests/sensor.py b/tests/sensor.py index 227d7ba..92a2a1a 100644 --- a/tests/sensor.py +++ b/tests/sensor.py @@ -112,7 +112,7 @@ class Sensor: def RH_SCD4x(self): return self.read_register(self.input_registers['RH_SCD4x']) - def read_register(self, register_number, retries=10): + def read_register(self, register_number, signed=False, retries=10): if self.input_register_start <= register_number <= self.input_register_end: function_code = 4 register_offset = register_number - self.input_register_start @@ -127,7 +127,7 @@ class Sensor: try: self.readout_total += 1 # minimalmodbus divides received register value by 10 - return self.serial.read_register(register_offset, 1, functioncode=function_code) * 10 + return self.serial.read_register(register_offset, 1, functioncode=function_code, signed=signed) * 10 except minimalmodbus.NoResponseError as e: last_exception = e self.readout_error_no_response += 1