OmniSTAR 8300HP gebruikershandleiding
32-Bit CRC
De OmniSTAR log berichtformaten bevatten allemaal een 32-bit CRC ter
verificatie van de data. Hierdoor kan met een grote mate van zekerheid
worden aangenomen, dat de uitgezonden en ontvangen vrij van fouten is.
Deze CRC kan met behulp van het volgende C algoritme worden gegenereerd:
#define CRC32_POLYNOMIAL 0xEDB88320L
/* --------------------------------------------------------------------------
Calculate a CRC value to be used by CRC calculation functions.
-------------------------------------------------------------------------- */
unsigned long CRC32Value(int i)
{
int j;
unsigned long ulCRC;
ulCRC = i;
for ( j = 8 ; j > 0; j-- )
{
als ( ulCRC & 1 )
ulCRC = ( ulCRC >> 1 ) ^ CRC32_POLYNOMIAL;
else
ulCRC >>= 1;
}
return ulCRC;
}
/* --------------------------------------------------------------------------
Calculates the CRC-32 of a block of data all at once
-------------------------------------------------------------------------- */
unsigned long CalculateBlockCRC32(
unsigned long ulCount, /* Number of bytes in the data block */
unsigned char *ucBuffer ) /* Data block */
{
Versie 1.3 NL, 11/03
55