基于Windows-CE的GPS应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

龙源期刊网基于WindowsCE的GPS应用作者:宋园方来源:《合作经济与科技》2009年第12期提要本文介绍了WindowCE串口读写以及GPS报文解析。阐述了串口读写数据的实现过程,并以GPRMC报文为例,说明从报文中提取有效数据的过程。关键词:嵌入式系统;GPS报文;串口;WindowsCE中图分类号:F49文献标识码:A嵌入式系统因为其拥有与应用紧密结合、系统体积小能够随意裁剪、实时处理的特点,现已成为生活、工业、服务业、消费电子各领域中不可或缺的一部分。嵌入式系统家族中成员不少,杰出的代表产品有VxWork、Linux、WindowsCE等。其中,WindowsCE出自微软,因为其继承了Windows的系统与应用程序相分离的特点,在嵌入式系统领域中抢占先机,独领风骚。GPS全球卫星定位系统,由美国国防部研制,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。随着全球定位系统的不断改进,硬软件的不断完善,应用领域不断地开拓,目前已遍及国民经济各部门,并开始逐步深入人们的日常生活。本文通过介绍WindowsCE串口应用程序的实现以及GPS数据报文格式解析,实现了基于WindowsCE的GPS应用。一、基于WindowsCE串口程序设计因为串性传输受干扰小、传输速度快的优点,被大量应用到各种外设与CPU之间的通信上,所以,目前主流的GPS芯片与CPU之间也是采用串口通信的。WindowsCE已经为开发者提供了现成的API。WindowsCE中用于打开串口的API函数为CreateFile,其原型为:HANDLECreateFile(LPCTSTRlpFileName,//将要打开的串口逻辑名,如COM1或COM2DWORDdwAccess,//指定串口访问的类型,可以是读取、写入或两者并列DWORDdwShareMode,//指定共享属性,由于串口不能共享,该参数必须置为0龙源期刊网,//引用安全性属性结构,缺省值为NULLDWORDdwCreate,//创建标志,对串口操作该参数必须置为OPENEXISTINGDWORDdwAttrsAndFlags,//属性描述,用于指定该串口是否可进行异步操作HANDLEhTemplateFile//指向模板文件的句柄,对串口而言该参数必须置为NULL);龙源期刊网,其原型为:BOOLReadFile(HANDLEhFile,//要读串口的句柄LPVOIDlpBuffer,//接收数据buffer的指针龙源期刊网,//读取数据的字节数LPDWORDlpNumberOfBytesRead,//实际读取数据的字节数LPOVERLAPPEDlpOverlapped//重叠操作时该参数指向一个OVERLAPPED结构,同步操作时该参数为NULL);打开串口后,需要对串口进行一些初始化配置工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。一般用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数设置串口。除了在BCD中的设置外,程序一般还需要设置I/O缓冲区的大小和超时。WindowsCE同Windows系统一样,用I/O缓冲区来暂时存放串口输入和输出的数据。调用SetupComm函数可以设置串行口的输入和输出缓冲区的大小。在读写串口时,由于硬件或是缓存等问题,会出现超时现象。在串口程序设计时,要有相应的处理。超时设置的作用是在规定的时间内没有读入或发送出指定数量的字符,则读或写的操作会终止。可以用GetCommTimeouts函数查询当前的超时设置,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。从串口读出数据后,我们就可以对GPS数据报文进行解析了。二、GPS报文解析GPS的数据有多种报文格式,分别有GPRMC、GPGSV、GPGSA、GPGGA。GPR-MC为推荐定位信息,GPGSV为可视卫星状态输出语句,GPGSA为GPS精度指针及使用卫星格式GPGGA为GPS固定数据输出语句。报文数据中有些数据是重复的,在解析GPS报文的时候,没有必要将所有的报文都解析,根据应用的需要,只解析所需数据即可。如本文涉及到的应用只需要经度、纬度,所以,龙源期刊网报文就足够了。如下是GPRMC报文数据格式和描述。其他应用所需报文数据及其相关报文数据描述,本文不再赘述。$GPRMC,,,,,,,,,,,(1)标准定位时间(UTCtime)格式:时时分分秒秒.秒秒秒(hhmmss.sss)(2)定位状态,A=数据可用,V=数据不可用(3)纬度,格式:度度分分.分分分分(ddmm.mmmm)(4)纬度区分,北半球(N)或南半球(S)(5)经度,格式:度度分分.分分分分(6)经度区分,东(E)半球或西(W)半球(7)相对位移速度,0.0至1851.8knots(8)相对位移方向,000.0至359.9度(9)日期,格式:日日月月年年(ddmmyy)(10)磁极变量,000.0至180.0(11)度数(12)Checksum.(检查位)因为串口收到的数据是GPS的全部报文,根据设计,我们只提取GPRMC报文。GPS报文数据是ASCⅡ码,在应用时,需要将其转换成数值,便于在程序中进行运算和对比。图1是从GPRMC报文中提取经度、纬度的具体流程,以及处理GPRMC报文,将维度、维度区分,经度、经度区分,提取出来部分代码。(图1)得到经度和纬度后,可以简单地做些应用,但是要达到商用GPS应用要求还需要进一步完善,如在短时间内GPS没有定位,则需要经纬度推算等设计。本文介绍了基于WindowsCE串口读取数据以及GPS报文解析的实现。该设计成功用于某便携式导航产品的电子狗功能中,实现了系统根据当前经纬度对指定地点距离进行判断。串口读取GPS数据方案在嵌入式领域中应用很广泛,如车载、手持产品中都有应用。WindowsCE已成为嵌入式系统的主流,其快速、模块化的开发方式,为开发者开发应用程序提供了规范、快速的框架。龙源期刊网(作者单位:西安欧亚学院信息工程学院)参考文献:[1]周毓林,宁杨,陆贵强,付林林.WindowsCE.net内核定制及应用开发.北京:电子工业出版社,2005.2.[2]龚建伟,熊光明.VisualC++/TurboC串口通信编程实践(第2版).北京:电子工业出版社,2007.9.

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功