![Novatel GPStation-6 Скачать руководство пользователя страница 43](http://html.mh-extra.com/html/novatel/gpstation-6/gpstation-6_user-manual_1711304043.webp)
43
GPStation-6 User Manual Rev 2
Messages
3.4.4
32-Bit CRC
The ASCII and Binary OEM6 family message formats all contain a 32-bit CRC for data verification.
This allows the user to ensure the data received (or transmitted) is valid with a high level of certainty.
This CRC can be generated using the following C algorithm:
#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-- )
{
if ( 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 */
{
unsigned long ulTemp1;
unsigned long ulTemp2;
unsigned long ulCRC = 0;
while ( ulCount-- != 0 )
{
ulTemp1 = ( ulCRC >> 8 ) & 0x00FFFFFFL;
ulTemp2 = CRC32Value( ((int) ulCRC ^ *u+ ) & 0xff );
ulCRC = ulTemp1 ^ ulTemp2;
}
return( ulCRC );
}
Содержание GPStation-6
Страница 89: ...OM 20000132 Rev 2 November 2012 ...