Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Если можно, обясните подробнее...

Отправлено Tolik 10 января 2007 г. 13:10
В ответ на: (+) отправлено ,,, 10 января 2007 г. 11:55

Имею в буфере pUART0_Buffer[] сообщение приемника:
$GPRMC,094409.870,V,,,,,,,100107,,*27
Из принятых байт я должен получить число 27.
Вашу функцию я запускаю следующим образом:
...
CheckCRC(pUART0_Buffer, 75);
...

Саму функцию я записал так:

char acc=0; // здесь я хочу получить контрольную сумму
char CheckCRC (char *buf, char len)
{
char tmp;
for (tmp=0; tmp {
if (buf[tmp]=='*') break;
acc ^= buf[tmp];
}
buf += tmp;
buf++;
tmp = (acc & 0xF0) >> 4;
if (tmp<0x0A) tmp |= '0';
else tmp += 'A'- 0x0A;
acc &= 0x0F;
if (acc<0x0A) acc |= '0';
else acc += 'A'- 0x0A;
if ((tmp!=*buf++) && (acc!=*buf)) return 1;
return 0;
}//CheckCRC

Результат выполнения АСС=0х33.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
к трём прибавьте 5:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru