{
int i;
c<<=8;
for(i=0;i<8;i++)
{
if((crc ^ c) & 0x8000)
crc=(crc<<1)^mask;
else
crc<<=1;
c<<=1;
}
return crc;
}
生成校验码
unsigned int CRCCode=0;
char *p=(char *)&m_curData;
for (int m=0; m<sizeof(Display_DataStruct); m++)
{
CRCCode=pFrame->DataCRC(CRCCode, p[m], M16);
}
CRCCode = ~CRCCode;
fwrite(&CRCCode,sizeof(unsigned int),1,fp);
fwrite(&m_curData,sizeof(Display_DataStruct),1,fp);
unsigned int CRCCode0=0;
unsigned int CRCCode1=0;
char *p=NULL;
BOOL flag=link.Begin(CRCCode0, pDisplay_data);
while(flag)
{
CRCCode0 = ~CRCCode0;
p=(char *) pDisplay_data;
for (int m=0; m<sizeof(Display_DataStruct); m++)
{
CRCCode1=link.DataCRC(CRCCode1, p[m], M16);
}
if (CRCCode1 == CRCCode0)
{
PartInfo[tail]=pDisplay_data->PartInfo;
tail++;
}
memset(pDisplay_data,0,sizeof(Display_DataStruct));
CRCCode0=0;
CRCCode1=0;
flag=link.GetNext(CRCCode0, pDisplay_data);
}