реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> CRC идея!, Помогите с реализацией
Who_are_you?
сообщение Apr 20 2010, 06:03
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 5-02-10
Из: Донецк
Пользователь №: 55 329



Подскажите, где почитать о применении 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;
}


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

Заранее благодарен.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 20 2010, 06:39
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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

Прогнать все байты через эту п/п.
В конце получите результирующую CRC. Её нужно добавить в конец сообщения.
На приёмной стороне прогоняете опять весь массив, вычисленная CRC должна совпасть с переданной.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 20 2010, 06:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Например, есть файл байтов, есть эта подпрограмма.
И какие действия нужно делать со стороны передачи и со стороны приема?
Сильный вопрос 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 результат
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 20 2010, 18:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Только сравнивать не надо. Просто прогоняете всё через п/п на приёмном конце включая саму CRC. В результате CRC будет равна 0.
Go to the top of the page
 
+Quote Post
Who_are_you?
сообщение Apr 21 2010, 05:19
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 5-02-10
Из: Донецк
Пользователь №: 55 329



Идею понял. Попробую реализовать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 21:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016