- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
GPS定位信息提取及应用
描述了GPS与手持终端串口通信的方法,并在WinCE6.0操作系统下提取GPS的定位信息,采用NMEA-0183通信协议中的RMC数据格式进行解析。简述了GIS概念,并介绍了GPS在GIS方面的应用。
GPS(Global Position Svstem)即全球定位系统,是20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统,其主要目的是用来为陆、海、空3大领域提供实时、全天候及全球性导航服务,具有高精度和自动测量的特点。利用该系统,用户还能够进行高精度的时间传递和精密定位。随着GPS的发展和完善其应用层面日益增大,嵌入式GPS的手持终端应运而生。而今,人们对生活智能化提出了更高的要求,使其在GIS领域上的应用得到了广泛关注。例如智慧城市、旅游导航等。用户可以手持带有GPS的MID实时获取位置、时间信息,实现定位导航功能。基于GPS的特性,文中介绍了GPS定位信息的提取方法,包括与MID串口通信的实现过程,并对获取的数据信号通过相关的协议进行解析。最后探讨了嵌入式GPS在导游中的应用。GPS还将在更多领域上得到应用,为人们的生活提供更大的方便。服务人性化、生活智能化将逐步实现。
1 GPS信号解析协议
GPS信号通过串口以NMEA-0183标准格式输出,NMEA-0183通信协议,提供6种数据格式,分别是GGA,GLL,GSA,GSV,RMC,VTG。在此主要介绍RMC格式数据。
$GPRMC是GPS推荐的最短数据,其帧结构为:
$GPRMC,<1>.<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息。GP为信息来源,RMC为句型识别符
字段1:UTC时间,hhmmss.sss格式
字段2:状态,A=定位,V=未定位
字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段4:纬度N(北纬)或S(南纬)
字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段6:经度E(东经)或W(西经)
字段7:速度,节,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000-180)度(前导位数不足则补0)
字段11:校验值
<CR><LF>:该帧数据的结束标识符
对接收到的数据进行解析后即可获得经纬度、速度、时间等信息,从而实现GPS定位信息的提取。
2 GPS软件流程图
目前MID主要使用Android操作系统,然而相比Android系统,WinCE操作系统的稳定性相对更高,技术更加成熟。本文将介绍在WinCE 6.0操作系统下GPS信号的提取与解析。GPS软件流程图如图1所示。
首先打开串口进行串口的初始化,配置串口的参数,根据硬件配置,默认设置串口为COM4口,比特率为9 600 bit/s,完成所有初始化工作后,启动监听线程,监听串口上所有的输入数据,当接收到数据后,对数据进行保存,若无数据,则继续监听。系统1 s定时触发事件,若数据存在,则对接收到的数据按照NMEA0183协议解析,从而显示在用户界面上。
3 GPS定位信息提取与解析
3.1 GPS读取MID串口数据流程图
首先创建串口的读线程,然后进行串口的监听,等待指定渎事件的发生。如果有可读数据则读串口,对接收到的事件进行数据处理。数据读取流程图如图2所示。
3.2 串行端口数据通信
1)打开串行端口
通过调用CreateFile函数打开串行端口
m_hComm=CreateFile (Port,GENERIC_READ1GENERIC_WRITE,0,0,OPEN_EXISTING,0,0)。这个函数的返回值是已打开串行端口的句柄值。
2)串行端口通信配置
串口打开后.需对串口进行配置。用GetCommState函数获得当前打开的串口参数,然后根据需要修改DCB的成员变量,用SetCommState函数来设置新的串口参数。