基于WinCE的GPS导航信息处理软件的实现
0 引言
卫星发出的信号通过GPS 接收机基带处理程序后, 可以获得相关的卫星星历和伪距、伪距律、载波相位、多普勒频移等原始观测量, 如何利用这些信息解算出接收机的位置、速度、时间等定位信息, 是定位解算程序的主要目的。
本文主要介绍了GPS OEM 接收机原始导航信息的获取、GPS 报文的解码以及位置速度等信息的解算程序设计。
1 平台设计
系统采用的操作系统为WinCE, WinCE 是一个多任务、完全抢占式的32 位嵌入式操作系统, 支持WinCEMFC、ATL、WinCE API 和一些附加的编程接口以及各种通信技术。开发工具采用eVC, eVC ( embedded visualC+ + ) 是Windows CE 上的主流开发工具, 封装了网络底层通讯、COM 互操作、RAPI 等。eVC 支持MFC 类库的子集, 使Win32 平台上的VC 程序可以很容易地迁移到WinCE 平台上。
硬件平台采用基于xscale PXA255 处理器的嵌入式系统, 采用NOVAT EL OEM4 接收机获得原始的GPS 导航数据, 两个平台间采用串口进行通讯。
1. 1 串口通信设置
eVC 在实现串口数据通信中存在2 个局限性: 一是eVC 不支持串口通信控件MScomm, 另外, WinCE 不支持重叠I/ O 操作。因此, 要采用WinCE A PI 函数和多线程技术进行数据串口通信的底层开发。
对串口的操作都映射成对文件的操作, 因此, 读取串口的数据相当于读取文件的数据。在eVC 环境中, 通过调用CreateFile 函数来打开串口, 设置读写模式:
H ANDL E m_hCom=CreateFile( STrCom, GENERIC _READ | GEN ERIC_WRITE, 0, NU LL, OPEN _ EXIST _ ING, FILE _AT TRIBU TE_NORMAL, NU LL)
因为WinCE 不支持重叠I/ O, 所以CreateFile 的第6个参数不能设置为:
FILE_FLAG_OVER_LAPPED, 否则串行通信处理将被系统信息阻塞。
打开串口后, 可以通过串口的初始化函数SetCommStat e( ) 来配置各项串口参数, 如波特率、奇偶校验方法、数据位和停止位数等。
1. 2 线程同步
WinCE 的API 不支持重叠I/ O 操作, 因此, 要采用多线程模式解决大量数据读写时产生的困难。当主线程忙时,可以使用单独的线程来处理串口, 也就是异步I/ O 模式。
为了保证在数据读取线程向主线程传递数据时所传递的变量不会被新的串口数据所覆盖, 可以采用互斥体技术。通过以下代码创建互斥体:
H ANDL ECreateMutex ( LPSECU RITY _ AT T RIBU T ESlpMutexAt tr ibutes,BOOL bInitialOwner , LPCTSTR lpN ame) .
线程通过一个等待函数来获得互斥体的所有权, 互斥体的线程是不会被阻断的, 完成对数据的处理后, 需要调用函数释放互斥体, 可以使用如下函数:
相关文章
- 2024-01-25电子汽车衡常见故障的分析
- 2024-10-14基于Newmark法的三角形板单元局部效应修正
- 2024-10-16混凝土搅拌棒振子的动力特性分析
- 2024-08-26电子水平仪测量机床导轨直线度的方法
- 2024-01-03RBF神经网络在“薄管板”结构强度分析中的应用
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。