新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > MIS系统中GPS15L模块的应用

MIS系统中GPS15L模块的应用

作者: 时间:2010-03-23 来源:网络 收藏
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 下一页

评论


相关推荐

技术专区

关闭