Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

кс по модулю два.

45K
19 сентября 2010 года
rookie
21 / / 15.10.2009
Привет всем.

В доках к девайсу,следущая инструкция:
Для подсчета контрольной суммы, суммируют по модулю два, двоичные
представления символов команды, начиная с маркера и до последнего символа, параметра команды dm. Полученный в результате двоичный байт разбивают на две тетрады, каждую из которых представляют в виде ASCII-символа [‘0’…’9’,’A’…’F’].

cmd ="#64700000R";

Расчет произвожу следующим образом
 
Код:
unsigned char crc = 0xff; //пробовал crc = 0;
char c[2];
unsigned int i;
 
for(int i = 0; i <strlen(cmd);++i)
        crc ^=  cmd;

sprintf(c,"%02X", crc);


пробовал так:
 
Код:
unsigned char crc = 0xff; // и 0;
    unsigned int i;
 
    while (len--)
    {
        crc ^= *pcBlock++;
 
        for (i = 0; i < 8; i++)
            crc = crc & 0x80 ? (crc << 1) ^ 0x31 : crc << 1;
    }

Подскажите правильный алгоритм расчета CRC по модулю 2.
Должно получится так "#64700000R06".
14
21 сентября 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: rookie

Должно получится так "#64700000R06".


А это к чему вообще? Как понимать?

45K
21 сентября 2010 года
rookie
21 / / 15.10.2009
Команда состоит из ASCII символов,
строка без crc #64700000R (1 маркер, 2-4 адрес, 5-9 пароль, 10 - команда),
строка с crc #64700000R06.
Собственно вопрос, как по выше изложенной инструкции, вычислить правильно crc.
Есть программа, которая общается с девайсом, она дает такой результат #64700000R06.
297
21 сентября 2010 года
koodeer
1.2K / / 02.05.2009
А откуда информация, что считать нужно по модулю два?
Если посчитать традиционно, то получается именно 06:
 
Код:
void main()
{
    char *cmd ="#64700000R";
    char crc = cmd[0];

    for (int i=1; i<strlen(cmd); ++i)
        crc += cmd;

    printf("%02x\n", crc); // выведет 06
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог