Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CRC идея!
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Who_are_you?
Подскажите, где почитать о применении CRC для передачи данных.
При поиске по Интернету много информации. Но реализация?

Вот подпрограмма, взятая с инета:
Код
unsigned char crc_ib(unsigned char __crc,unsigned char data)
{
unsigned char temp;
temp=__crc^data;
__crc=0;
if (temp&(1<<7)){__crc^=0x8C;}
if (temp&(1<<6)){__crc^=0x46;}
if (temp&(1<<5)){__crc^=0x23;}
if (temp&(1<<4)){__crc^=0x9D;}
if (temp&(1<<3)){__crc^=0xC2;}
if (temp&(1<<2)){__crc^=0x61;}
if (temp&(1<<1)){__crc^=0xBC;}
if (temp&(1<<0)){__crc^=0x5E;}
return __crc;
}


Ну и что? Например, есть файл байтов, есть эта подпрограмма.
И какие действия нужно делать со стороны передачи и со стороны приема?

Заранее благодарен.
MrYuran
Цитата(Who_are_you? @ Apr 20 2010, 10:18) *
Ну и что? Например, есть файл байтов, есть эта подпрограмма.
И какие действия нужно делать со стороны передачи и со стороны приема?

Прогнать все байты через эту п/п.
В конце получите результирующую CRC. Её нужно добавить в конец сообщения.
На приёмной стороне прогоняете опять весь массив, вычисленная CRC должна совпасть с переданной.
XVR
Цитата
Например, есть файл байтов, есть эта подпрограмма.
И какие действия нужно делать со стороны передачи и со стороны приема?
Сильный вопрос wacko.gif
Если это вызывает вопросы, то надо 'взять с инета' программу целиком smile.gif

По существу. Нужно запустить эту процедуру на каждый байт данных. В начале параметр __crc чем нибудь инициализируется, далее он переписывается из результата функции. Посчитанный crc передать на приемный конец. Там все повторить и сравнить crc
Код
unsigned char* data=...
size_t data_length = ...
unsigned char crc=0;
while(data_len--) crc=crc_ib(crc,*data++);
// В crc результат
SasaVitebsk
Только сравнивать не надо. Просто прогоняете всё через п/п на приёмном конце включая саму CRC. В результате CRC будет равна 0.
Who_are_you?
Идею понял. Попробую реализовать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.