Python ASCII шестнадцатеричное преобразование

У меня есть скрипт, написанный на python3, который читает данные с устройства, подключенного через USB.

Вывод с устройства гласит следующее.

(240.0 08.3 240.0 50.0 08.3 2000 2000 24.0 25.0 21.0 29.2 27.0 1 10 030 0 2 1 1 01 0 0 25.0 0 1ÖZ

Мне нужно проверить эти данные с помощью crc. Проверка crc состоит в том, что crc всех данных ожидает, что последние 2 байта должны совпадать с последними двумя байтами.

Пример: crc(data[0:-2]) == data[-2:]

У меня есть следующий код.

def validateResult(result):
    firstPart = result[0:-2].encode('utf-8')
    lastPart = result[-2:].encode('utf-8')
    crc = crc16.crc16xmodem(firstPart).to_bytes(2, 'big')
    print (result)                     # pints the input
    print (binascii.hexlify(crc))      # prints b'd65a' -> d6 is not in ascii table. While its in extended ascii
    print (binascii.hexlify(lastPart)) #prints b'c3965a'
    if(crc == lastPart):
        return True
    print ("CRC failure")
    return False

Код для чтения данных:

res += "".join([chr(i) for i in dev.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize, timeout) if i != 0x00])

Как я могу исправить этот метод, чтобы он правильно проверял CRC?

0 ответов

Другие вопросы по тегам