GPS 校验和如何计算

作者:fly 发布于:2014-8-2 8:45 分类:嵌入式

本文出自www.forwhat.cn

从$到*之间的所有数据按位异或。不包含 $*

 

TQ_U8 LG_GTS_4E_60_ReciveMsg(TQ_U8 * dt,TQ_S32 Lenght)
{//先计算校验和
	TQ_U8 checksum=0;
	TQ_U8 getsum=0;
	TQ_U32 cnt=0;
	checksum=dt[1];
	for(cnt=2;cnt<Lenght-5;cnt++)
	{
		checksum=checksum^dt[cnt];
	}
	//验证校验和
	getsum=(LG_GTS_4E_60_C_T_B(dt[Lenght-4])<<4)+LG_GTS_4E_60_C_T_B(dt[Lenght-3]);
	if(getsum!=checksum)
	{
		return Err_resinvalid;
	}
	if(LG_GTS_4E_60_strStartsWith((TQ_S8*)dt,"$GPGGA"))
	{
		Fra_PositionProGPGGA(dt,Lenght);
	}
	
	if(LG_GTS_4E_60_strStartsWith((TQ_S8*)dt,"$GPRMC"))
	{
		Fra_PositionProGPRMC(dt,Lenght);
	}
	
	if(LG_GTS_4E_60_strStartsWith((TQ_S8*)dt,"$GPGSV"))
	{
		Fra_PositionProGPGSV(dt,Lenght);
	}
	return 0;
}

 

 

评论:

水产水人
2015-03-09 16:19
博主的代码很简洁啊,我也写过,不过太烂了,而且到最后发现CPU已经忙不过来了,校验都省略了
屠龙
2014-08-11 20:14
不懂这个,也看不懂。

发表评论:

 
Powered by emlog sitemap