diff --git a/solar_ble.py b/solar_ble.py index 097bab1..a0518b1 100755 --- a/solar_ble.py +++ b/solar_ble.py @@ -305,7 +305,11 @@ def readMemory(fh: RawIOBase, address: int, words: int = 1) -> Optional[bytes]: data = fh.read(size) _crc = fh.read(2) if data and _crc: - crc = struct.unpack_from("<H", _crc)[0] + try: + crc = struct.unpack_from("<H", _crc)[0] + except struct.error: + log(f"readMemory: CRC error; read {len(_crc)} bytes (2 expected)") + return None calculated_crc = modbus(bytes([tag, operation, size, *data])) if crc == calculated_crc: return data