def modbus_crc16(data: bytearray) -> bytearray: crc = 0xFFFF for byte in data: crc ^= byte for _ in range(8): if crc & 0x0001: crc = (crc >> 1) ^ 0xA001 else: crc >>= 1 return bytearray([crc >> 8,crc & 0xFF])