基于ARM和WINCE的便携式差分GPS导航定位系统设计及
本格式保存,用于事后数据处理分析,在“发送”编辑框可借助NMEA0183指令进行HC12参数设置;在“定位信息”区有经纬度、航向、速度、GPS时间等参数实时显示,点击“清除轨迹”可将海图显示区历史轨迹清除;“导航信息”区可进行“目标点”添加、修改、删除、画圆、航线等设置,实时显示本船距目标点位置、方位、偏离等参数:在“海图操作”区可进行放大、缩孝本舰居中、目标居中、标记当前点位等操作,勾选“平移海图”后点按左侧海图区不动可进行上下左右移动;左侧蓝色区域为海图显示区,可直观显示本船与各目标点位置关系、试验态势等。 2.2 设置HC12参数 通过串口建立差分GPS模块与ARM或PC机的连接,借助NMEA0183指令,通过任意一串口均可以设置HC12。可用开发软件串口通信区“发送”命令按钮或串口助手软件(WINCE或WINXP均可)进行通信,首先设置接收机应用模式为SBAS,再设置串口通信波特率、串口输出的NMEA语句及输出速率,最后设置最大差分龄期和卫星仰角。 差分GPS模块串行通讯参数为:波特率=19200,数据位=8位,停止位=1位,无奇偶校验。通过串口建立ARM和GPS的连接,GPS加电后便自动搜索卫星,并通过串口以每秒1次的频率向ARM发送GPRMC格式的定位信息,在定位信息有效后ARM便可以提取所需要的定位信息。 2.3 读取串口 获取GPS导航数据实际上就是通过串口读取HC12输出的NMEA格式数据的过程,下面介绍WINCE下读取串口程序的开发过程。 2.3.1 打开串口 点击“打开”按钮,进入此按钮的消息响应函数,函数中执行打开串口和串口参数配置等操作。首先调用CreateFile()函数打开指定的端口,接着对串口进行参数配置,包括波特率、数据位、停止位、奇偶校验等。参数设置过程为:先调用GetCommState()获取串口的当前配置,得到结构体DCB(Device Control Block,设备控制块)的指针,通过它给DCB结构体赋值,然后传给SetCommState()函数对串口进行配置。 最后设置串口的超时参数,设置方法与上述参数设置类似,先通过GetCommTimeouts()得到一个结构体指针,赋值后传给Set Comm Time outs()进行设置。 2.3.2 接收数据 串口打开后,自动开始接收,函数中调用了CreateThread()开辟了一个线程,用于接收串口数据。由于接受过程需要调用WaitCommEven()函数来不停地等待数据到来事件,会致使程序无法响应其他操作,因此采用开辟线程的办法来防止信息拥堵。 图4所示为接收串口数据的线程中执行的操作流程。程序实现了串口数据的接收,并把接收到的数据传递给Dig类,用于后期进行定位信息提取及显示等操作。 2.4 提取定位数据 NMEA-0183通信标准的输出数据采用的是ASCⅡ码,主要有GGA、GLL、GSA、GSV、RMC、VCT等不同的结构,每种类型的帧均是以“$”开头,然后是两个字母的“识别符”和3个字母的“语句名”组成ID信息头,接着就是以逗号分割的数据体,末尾为校验和,以回车换行符结束。本设计只关心日期、时间、经纬度、地面速度等,选用GPRMC语句,表1中对该语句结构作了详细说明,按图5所示的流程即可完成GPS数据的提取。注意在编写程序中不要出现m_strRecv[i+k](k>0)这样的表达式,例如以(m_strDataReceived[i]==‘$’m_strDataReceived[i+3]==‘R’)为判断条件来提取ID头,容易造成超出数组元素个数的错误。 3 系统实验及精度分析 实验地点选在运动场场开阔处,先采用静态内符合法进行精度测试。连接差分GPS天线,给系统上电,运行开发软件,设置好串口参数,打开串口COM2,待差分GPS模块进入稳定差分定位后开始保存数据,采集数据约3 000组,用MATLAB处理采集数据,结果如图6所示。 导航定位等功能测试:手持该系统进行直线和圆形运动,观察海图区域航迹向轨迹形状;设定1个目标点,画半径为200米的圆并设置航线,分别按直线和曲线前进,观察距离、偏离、方位等参数变化;对海图进行放大、缩小和平移,分别点选本舰居中和目标居中,观察海图显示变化。 测试表明,终端软件能平稳地运行在嵌入式WINCE5.0系统上,操作界面简洁、直观、实用、功能全面,具有良好的实时性和准确性,系统定位精度(2DRMS)优于1 m。 4 结束语 文中基于ARM硬件平台,以WINCE为嵌入式操作系统,在Visual Studio2008下开发了串口通信导航数据软件,通过串行接口实现差分GPS模块与ARM之间的通信,构建了一个体积孝功耗低、功能全面的便携式差分GPS导航定位系统,并给出




- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)
