[an error occurred while processing this directive]
|
Когда-то я тоже использовал CRC-8, но после одного случая решил больше не экономить по одному байту на блок и использовать 16 проверочных бит как минимум.
С некого прибора писались небольшие блоки раз в секунду в систему сбора на flash (не мою). Заказчик получал данные и обрабатывал самостоятельно, декодируя их моей программой. Когда у блока был неправильный CRC, писалось, что CRC неправильный и блок невозможно декодировать. По просьбе заказчика это было опционально - можно было сбойные блоки просто игнорировать, чтобы надписи о редких неправильных блоках не засоряли таблицу.
И вот однажды заказчик мне пожаловался, что в собранной информации мало записей и, что самое главное и самое неприятное, - он подозревает, что что-то случилось с прибором, так как в правильных блоках записана какая-то чушь.
Все оказалось очень просто. Сломалась система сбора - принятые байты заменялись случайными. А для CRC-8 вероятность пропуска ошибочного блока в такой ситуации составляет порядка 1/256. Разумеется, заказчик всегда обрабатывал данные в режиме игнорирования ошибочных блоков :).
E-mail: info@telesys.ru