Сделал зеркалирование:
uint8 mas[29]={0xFF,0x03,0xC0,0x21,0x01,0x03,0x00,0x19,0x02,0x06,0x00,0x0A,0x00,0x00,0
x07,0x02,0x08,0x02,0x05,0x06,0xBC,0x62,0x12,0x3F,0x03,0x05,0xC2,0x23,0x05};
uint8 mas_bit[8]={1,2,4,8,16,32,64,128};
uint8 ch0,ch1;
CRC=0xFFFF;
for(x=0;x<29;x++)
{
ch0=mas[x];
ch1=0;
for(z=0;z<8;z++) if(ch0 & mas_bit[z]) ch1|=mas_bit[7-z];
CRC=crc16_o(mas[ch1],CRC);
}
CRC1: 5C07
CRC1^: A3F8
Т.е. не равно EEF1.
Я не совсем понимаю смысл фразы:
Цитата
Затем эти данные прогоняются через функцию CRC, результат зеркалируется
Конкретно: результат зеркалируется. Т.е. мы берём байт, зеркалируем его, прогоняем через CRC. Полученую CRC зеркалируем (2 байта), потом опять туже процедуру? Я так делал, CRC не совпадает.
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!