首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
MIS系统中GPS15L模块的应用
来源:本站整理  作者:佚名  2010-03-23 11:20:32



2.2 GPS数据提取

一般情况下,GPS接收机只要处于工作状态,就会源源不断地把接收到的信息通过串口传送到主控制板中。它的每一条NMEA语句都是以“$”为开始标志、以“\n”为结束标志。接收到的GPRMC语句格式为:



其中,CR、LF分别表示ASCII字符“回车”和“换行”,hh代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符)。其含义见表1所列。



通过读串口得到的数据可能会出现两种情况,一种情况是每次读到的数据中都会有完整的GPRMC语句,另一种情况是GPRMC分两次获得。获得完整的句子之后。接着判断得到的句子是否为GPRMC语句(即判断句子是否以GPRMC开头),如果是GPRMC语句,再就开始判断每个数据格式是否正确,包括表1中的UTC时间格式、定位有效性、纬度格式、纬度半球表示方法、经度格式、经度半球表示方法、UTC日期格式信息等,最后还将“$”和“*”之间的所有字符按位异或(不包括这两个字符),并计算校验和,看其是否为hh值(“*”之后的值)。

判断语句是否为GPRMC语句的流程如图2所示。



其部分关键函数如下所示:

int Init();初始化函数,用来打开串口,进行串口设置(波特率、数据位、校验位)等;

void Tick ();读串口数据函数;

void Cleanup ();关闭串口函数;

void Decode(char*szData);判断GPRMC语句函数;

bool VeriLine(char*szBuffer);判断GPRMC语句中数据格式是否正确函数;
 
void DecodeLine (char*szBuffer);提取GPRMC语句中有用信息并打印,包括时间、经
纬度、日期。

以下是部分相关函数:

bool VeriLine(char*szBuffer);判断GPRMC语句中数据格式是否正确函数;

bool VeriTimeForm(char*szBuffer2);判断时间格式函数;
bool VeriLonForm(char*szBuffer2);判断经度格式函数;
 
bool VeriLatForm(char*szBuffer2);判断纬度格式函数;

bool VeriDayForm(char*szBuffer2);判断日期格式函数;

如果语句为正确的GPRMC语句,接下来就可以提取所需信息,提取时间、经纬度和日期信息的部分程序如下:

void PrintTime(char*szBuffer2);打印时间函数,在此要将UTC时间转换为北京时间;

void PrintLonLat (char*szBuffer2,int n);打印经纬度函数;

void PrintDay (char*szBuffer2);打印日期函数,以年/月/日形式打印。

3  结束语

全球定位系统具有性能好、精度高、应用广等特点,是迄今最好的导航定位系统。随着全球定位系统的不断改进,以及硬件和软件的不断完善,其应用领域还在不断地开拓。目前,GPS应用已开始逐步深入人们的日常生活。GARMIN的GPS接收机功耗非常小,数据更新很快,而且,其优良的性能既能满足陆地导航的灵敏度要求,也能满足飞行器的动态要求。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:146,468.80000 毫秒