Index: leahi_dialin/utils/abstract_classes.py =================================================================== diff -u -r41805cd3ccca131f8e592b0777f90ab587d2be3f -rc8bafcb198910f30a8fb1c37024050b2c20ea898 --- leahi_dialin/utils/abstract_classes.py (.../abstract_classes.py) (revision 41805cd3ccca131f8e592b0777f90ab587d2be3f) +++ leahi_dialin/utils/abstract_classes.py (.../abstract_classes.py) (revision c8bafcb198910f30a8fb1c37024050b2c20ea898) @@ -163,25 +163,27 @@ datatype: DataTypes = decode_details[-1] key_list_length = len(decode_details) - 1 - end_pos = start_pos + datatype.size() - for i in range(0, length): + end_pos = start_pos + datatype.size() try: new_value = struct.unpack(datatype.unpack_attrib(), bytearray(message['message'][start_pos:end_pos]))[0] - if i == 0: + if length == 1: value = new_value - else: - value += new_value + elif datatype == DataTypes.U08 and length > 1: + if i == 0: + value = chr(new_value) + else: + value += chr(new_value) + if debug: + print(f'Input Data: {bytearray(message["message"][start_pos:end_pos])}') + print(f'Unpack attrib: {datatype.unpack_attrib()}') + print(f'Value: {value}') + print(f'New value: {new_value}') except Exception as e: value = None break + start_pos = end_pos - if debug: - print(f'key_1: {key_1}') - print(f'key_2: {key_2}') - print(f'value: {value} ({datatype.name})') - print(f'pos: {start_pos} - {end_pos}') - if 'nan' in str(value).lower(): value = None # raise ValueError(f'{value} is not an accepted value!')