unsigned short CRC16_MODBUS(unsigned char *puchMsg, unsigned int usDataLen)
{
unsigned short wCRCin = 0xFFFF;
unsigned short wCPoly = 0x8005;
unsigned char wChar = 0;
while (usDataLen--)
{
wChar = *(puchMsg++);
InvertUint8(&wChar, &wChar);
wCRCin ^= (wChar << 8);
for(int i = 0; i < 8; i++)
{
if(wCRCin & 0x8000)
{
wCRCin = (wCRCin << 1) ^ wCPoly;
}
else
{
wCRCin = wCRCin << 1;
}
}
}
InvertUint16(&wCRCin, &wCRCin);
return (wCRCin) ;
}
C语言-MODBUS的CRC16位校验函数
最新推荐文章于 2024-04-08 09:30:46 发布