Witam.
Mam pytanie potrzebuje obliczyć CRC dla mojej paczki danych.
W tym celu znalazłem sobie kilka kodów między innymi ten :
CRC16:
unsigned short TForm1::ModbusCRC(unsigned char buf)
{
unsigned short crc = 0xffff;
int i;
crc ^= buf;
for(i=0; i<8; i++)
{
if(crc & 1)
{
crc >>= 1;
crc ^= 0xA001;
}
else
{
crc >>= 1;
}
}
return crc;
}
..............
unsigned short CRC;
CRC=ModbusCRC(123);// daje 25599 czyli HEX:0x63; 0xFF;
chciałem to sprawdzić choćby tu http://www.lammertbies.nl/comm/info/crc-calculation.html?crc=ff0510&m...
ale tam wychodzi zupełnie co innego. Wyniki zgadzają się tylko jeśli obliczam CRC dla cyfr od 1 do 9 np. CRC=ModbusCRC(1);
Próbowałem też innych algorytmów ale za każdym razem jest podobnie co jest tego przyczyną?
Pozdrawiam.