汉语大全>汽车电子>基于WinCE的GPS导航信息处理软件的实现

基于WinCE的GPS导航信息处理软件的实现

详细内容

0引言

卫星发出的信号通过GPS接收机基带处理程序后,可以获得相关的卫星星历和伪距、伪距律、载波相位、多普勒频移等原始观测量,如何利用这些信息解算出接收机的位置、速度、时间等定位信息,是定位解算程序的主要目的。本文主要介绍了GPSOEM接收机原始导航信息的获取、GPS报文的解码以及位置速度等信息的解算程序设计。

1平台设计

系统采用的操作系统为WinCE,WinCE是一个多任务、完全抢占式的32位嵌入式操作系统,支持WinCEMFC、ATL、WinCEAPI和一些附加的编程接口以及各种通信技术。开发工具采用eVC,eVC(embeddedvisualC++)是WindowsCE上的主流开发工具,封装了网络底层通讯、互操作、RAPI等。eVC支持MFC类库的子集,使Win32平台上的VC程序可以很容易地迁移到WinCE平台上。

硬件平台采用基于xscalePXA255处理器的嵌入式系统,采用NOVATELOEM4接收机获得原始的GPS导航数据,两个平台间采用串口进行通讯。

1.1串口通信设置

eVC在实现串口数据通信中存在2个局限性:一是eVC不支持串口通信控件MSm,另外,WinCE不支持重叠I/O操作。因此,要采用WinCEAPI函数和多线程技术进行数据串口通信的底层开发。

对串口的操作都映射成对文件的操作,因此,读取串口的数据相当于读取文件的数据。在eVC环境中,通过调用CreateFile函数来打开串口,设置读写模式:

HANDLEm_h=CreateFile(STr,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXIST_ING,FILE_ATTRIBUTE_NORMAL,NULL)

因为WinCE不支持重叠I/O,所以CreateFile的第6个参数不能设置为:

FILE_FLAG_OVER_LAPPED,否则串行通信处理将被系统信息阻塞。

打开串口后,可以通过串口的初始化函数SetmState()来配置各项串口参数,如波特率、奇偶校验方法、数据位和停止位数等。

1.2线程同步

WinCE的API不支持重叠I/O操作,因此,要采用多线程模式解决大量数据读写时产生的困难。当主线程忙时,可以使用单独的线程来处理串口,也就是异步I/O模式。

为了保证在数据读取线程向主线程传递数据时所传递的变量不会被新的串口数据所覆盖,可以采用互斥体技术。通过以下代码创建互斥体:

HANDLECreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes,BOOLbInitialOwner,LPCTSTRlpName).

线程通过一个等待函数来获得互斥体的所有权,互斥体的线程是不会被阻断的,完成对数据的处理后,需要调用函数释放互斥体,可以使用如下函数:

BOOLReleaseMutex(HANDLEhMutex)

2GPS导航电文解码

2.1导航电文的格式

由卫星发出的导航电文是用户用来定位和导航的基础数据。导航电文一般包含卫星的星历和历书数据、工作状态、时钟改正、电离层时延修正、大气层折射修正以及相应的观测信息,在报文中还包括奇偶校验信息,用来验证报文接收的正确性。电文处理模块的功能,就是根据接收从基带处理模块中获得的导航电文,并进行奇偶校验,确定报文完整后,根据电文格式,对二进制电文进行解析,从而获得电文中的导航信息。

导航电文的格式是主帧、子帧、字码和页码,如图1所示。每主帧电文长度为1500b,传送速率为50b/s,所以发播一帧电文需要30s时间。



图1导航电文帧结构

每帧导航电文包括5个子帧,每个子帧长6s,共有300b.第1、2、3子帧各有10个字码。这3个子帧的内容每30s重复一次,每小时更新一次。第4、5子帧各有25页,共有15000b.一帧完整的电文共有37500b.

2.2导航电文的内容

导航电文的内容包括遥测码、转换码、第1数据块、第2数据块和第3数据块5部分:

第1子帧的第3~10个字码为第1数据块。它的主要内容是:标志码、数据龄期、卫星时钟改正系数、卫星测距精度、大气传播时延改正。

第2数据块包括第2和第3子帧,它载有卫星的星历,用来计算卫星的位置。

第3数据块是由第4和第5两个子帧构成的,它提供了GPS卫星的历书数据。当接收机捕获到某颗卫星后,利用第3数据块的信息可以得到其他卫星的概略星历、时钟改正、码分地址和卫星状态等数据。用户可以根据卫星历书和自己所在的位置,计算出该时刻能观测到的卫星及其方位角和高度角,从而选择,以快速捕获和定位。

3软件编制

通过串口接收到GPS导航电文并且经过奇偶验证和解码后,就可以获得GPS卫星的星历和观测信息,包括伪距、载波相位、多普勒频移。利用卫星的星历,可以计算出当前可见卫星的坐标和在运行速度。一般情况下,可见的卫星数都大于解算所需的卫星数,为了获得最优的定位精度,要对当前可见的卫星进行选择。本系统中,采用最小GDOP法进行选星,选出的最优星座的卫星信息结合观测量,通过误差修正程序进行伪距修正后,就可以构成接收机位置的解算方程组。解出此方程组,即可获得接收机的当前位置和速度以及接收机钟差。

软件基本流程如图2所示。



图2软件主要流程

4测试结果

2006年7月4日,在北航对系统进行了测试。经过测试,系统工作正常,解算结果散布在较小的范围内。结果显示如图3~5所示。

5结论

本文提出的基于嵌入式WinCE的GPS导航信息处理方案已经在某导航接收机的研制中得到应用,系统工作稳定,能够满足可靠性和实时性要求,达到预期效果。