У меня есть сенсорное устройство, которое передает 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.
Пожалуйста, если у вас есть какие-либо советы или уловки, которые я могу попробовать опубликовать здесь, я действительно в отчаянии.
Спасибо