BYTE1 | BYTE2 | BYTE3 | BYTE4 | BYTE5 | BYTE6 | BYTE7 | BYTE8 | BYTE9-BYTEn |
---|
0xCA | 0xC0 | | | | | | | |
帧首 | 帧首 | 帧长 | 地址 | 命令 | 类型 | 校验H | 校验L | 数据 |
pHead | pHead | pLen | pAddr | pComm | pType | pCheckDataH | pCheckDatal | pData[] |
public UInt16 CRCCCIT(byte[] data, int Datalength)
{
UInt16 wTemp = 0;
UInt16 wCRC = 0xFFFF;
UInt16 i, j;
for (i = 0; i < Datalength; i++)
{
for (j = 0; j < 8; j++)
{
wTemp = (UInt16)(((data[i] << j) & 0x80) ^ ((wCRC & 0x8000) >> 8));
wCRC <<= 1;
if (wTemp != 0)
{
wCRC ^= 0x1021;
}
}
}
return wCRC;
}
INT16U CRCCCITT(const INT8U* pDataIn, INT16U iLenIn)
{
INT16U wTemp = 0;
INT16U wCRC = 0xFFFF;
INT32U i,j;
for (i = 0; i < iLenIn; i++)
{
for(j = 0; j < 8; j++)
{
wTemp = ((pDataIn[i] << j) & 0x80 ) ^ ((wCRC & 0x8000) >> 8);
wCRC <<= 1;
if(wTemp != 0)
{
wCRC ^= 0x1021;
}
}
}
return wCRC;
}