感谢牛人,历史总结
//从$到*号所有char的异或
int gps_xor_comparative_test(char * charGPS )
{
//char a[]="$GPRMC,054041.000,A,1855.597600,N,07309.914880,E,0.00,143.39,250319,,,A*6F";
char * char_gps = charGPS;
int i,result;
for(result=char_gps[1],i=2;char_gps[i]!='*';i++)
{
result^=char_gps[i];
}
return result;
}
/*****获取系统时间ms*****/
uint64 getSystemTime()
{
struct timeval tv;
gettimeofday(&tv,NULL); //该函数在sys/time.h头文件中
uint64 temp_utc = (uint64)tv.tv_sec * 1000 + (uint64)tv.tv_usec / 1000;
//printf("DataHandler::getSystemTime ms:%0lld\n", temp_utc);
return temp_utc;
}
/**********************************************************
Function(函数名称): GetCRC()
Description:
得到数据CRC校验码
Input:
data 数据指针
length 数据长度
****************************************************************/
int GetCRC(const BYTE *data, int length)
{
unsigned short fcs = 0xffff;
while (length > 0)
{
fcs = (fcs >> 8) ^ crcTab16[(fcs ^ *data) & 0xff];
length--;
data++;
}
return ~fcs;
}