У меня есть чувствительное устройство, которое передает 6-байтовое сообщение вместе с 1-байтовым счетчиком и предположительно контрольной суммой.
Данные выглядят примерно так:
------DATA----------- -Counter- --Checksum?--
55 FF 00 00 EC FF ---- 60---------- 1F
Последние четыре бита в счетчике всегда установлены в 0, т.е. эти биты, вероятно, не используются. Предполагается, что последний байт является контрольной суммой, поскольку он имеет довольно специфическую природу. Он имеет тенденцию случайного изменения при изменении данных.
Теперь мне нужно найти алгоритм для вычисления этой контрольной суммы на основе --DATA--.
я попробовал все возможные полиномы CRC-8, для каждого полинома я пытался отразить данные, переключить их, инициировать с ненулевыми значениями и т. д. Я пришел к выводу, что я не имею дело с обычным crc- алгоритм. Я также безуспешно пробовал некоторые методы flether и adler, xor, взад и вперед, но все же я понятия не имею, как создать контрольную сумму.
Моя самая большая проблема в том, как используется счетчик ??? Одни и те же данные, но с другим встречным значением генерируют разные контрольные суммы.
Я попытался включить счетчик в мои вычисления, но безуспешно.
Вот некоторые другие образцы данных:
55 FF 00 00 F0 FF A0 38
66 0B EA FF BF FF C0 CA
5E 18 EA FF B7 FF 60 BD
F6 30 16 00 FC FE 10 81
Еще одна вещь, о которой стоит упомянуть, это то, что последний байт в данных принимает только значения FF или FE
Пожалуйста, если у вас есть какие-либо советы или хитрости, которые я могу попробовать опубликовать здесь, я действительно в отчаянии.
Спасибо