一种GPS移动设备的实现

gps 是英文global positioning system(全球定位系统)的简称,在机械领域gps则有另外一种含义:产品几何技术规范(geometrical product specifications)-简称gps.由于gps技术所具有的全天候、高精度和自动测量的特点,作为先进的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展的各个应用领域。
如何设计一个带有gps功能的移动设备,实现对gps卫星数据的接收和解码,已经是现在cps应用的热点。
1 开发平台
1.1 软件平台
为适应大多数windows用户的使用习惯,我们设定移动设备运行环境为嵌入式操作系统windows ce 5.0,开发过程在windows xp操作系统下进行。开发软件为visual studio 2005,编程语言为c++。vs2005是windows操作系统下的一套完整的开发工具,用于生成asp web应用程序、xml web services、桌面应用程序和移动应用程序。通过使用这些工具和.netframework精简版,可以在个人数字助理(pda)、移动电话和其他资源受约束的设备中,创建、生成、调试和部署在.net framework精简版上运行的应用程序。
windowsce是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的windows 95,windows ce的图形用户界面相当出色。windows ce 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统,windows ce 可以通过设计一层位于内核和硬件之间代码来用设定硬件平台,这即是众所周知的硬件抽象层(hal)(在以前解释时,这被称为 oemc (原始设备制造)适应层,即 oal; 内核压缩层,即 kal. 以免与微软的 windows nt 操作系统 hal 混淆) .
1.2 硬件平台
1.2.1 嵌入式开发板
由于设定移动设备使用的运行环境为wince 5.0,过程中需要处理大量的数据,所以对开发板要求较高。目前wince 5.0支持的处理器主要有arm、x86、powerpc、mips等,其中arm是近年来在嵌入式系统中很有影响力的微处理器架构。考虑到本系统移动终端的体积、功耗、成本等因素,最后决定选用arm内核的处理器,开发板为光嵌公司的gec2440,主要参数如表l所示。
1.2.2 gps接收模块
gps接收模块负责接收gps射频信号,将信号下变频和解调,输出标准的串口信号供处理器进行下一步处理。本设计中用到的gps接收模块为levave公司的gps-r36-at模块,性能参数如表2所示。该接收模块主要包含基带芯片和射频芯片,采用了sirf iii模块,整合片状陶瓷芯片,无需外加天线,接收c/a码卫星信号,输出的信号为nmea0183协议数据,通过串口与主设备进行通信。
2 整体设计
设计主要依照gps数据信号的流向来进行。gps数据信号通过串口读入到开发板主程序,然后经过对数据信号进行解码获得当前位置的经纬度信息,再在经纬度数据库中查询获得当前位置的地名,整个过程由触摸屏进行显示,并通过触摸屏完成人机交互。
2.1 串口驱动
microsoft embedded tools封装了windows api函数,便于windows ce应用程序的开发。在windows ce中,所有的设备都被看成是文件。串口通信可以像访问普通文件那样通过api通信函数来实现,系统的虚拟驱动程序负责执行特定的工作。在windows ce下串行端口被视为用于打开、关闭、读写串行端口的常规可安装的流设备,是串行设备接口的常规i/o驱动程序调用和与通信相关的具体函数的结合。windows ce的通信函数和其它大多数windows的通信函数相似,值得注意的是,windows ce不支持直接对串行端口的寄存器进行编程。
2.1.1 打开和关闭串口
createfile函数用于打开串行口。m_hdscomm=createfile(_t(com2:)),gener2ic_read|gener ic_wr ite,0,null,open_existin-g,0,null)。注意com2后面要有一个冒号。第三个参数dwsharemode也必须为o,通信端口不能像文件一样被共享。最后一个参数dwflagsand-attributes必须为0,因为windows ce只支持非重叠i/o。这个函数的返回值是已打开的串行端口的句柄或者是invalld_handle_value。关闭串口可以调用closehandle(m_hdscomm)。
2.1.2 串口参数设置
串口设置主要是用dcb构配置端口设置,包括波特率、停止位、数据位长度、校验位、流量控制和超时值等等。首先打开串行端口,用getcommstate函数获得当前打开的串口配置,然后根据需要修改dcb成员,最后用setcommstate函数设置新的串口配置。
2.1.3 设置缓冲区大小和超时
对串口来说,必须设置超时值,否则程序可能陷入到一个循环来等待来自串口的字符。这对采用windowsce的设备来说,将大大减少设备电池的使用时间,所以超时值是必须配置的。另外一种解决办法就是采用多线程。通常,配置超时值和配置串口类似。首先用getcommti-meouts函数获得当前串口的超时值,然后修改com2mtimeouts成员,最后用setcommtimeouts函数设定超时值。
2.1.4 读写串口
利用readfile和writefile函数读写串口。需要注意的是windows ce不支持重叠i/o,所以如果在主线程进行大量读写串口操作时,有可能使整个程序陷入缓慢的串口等待中去,因此一般都采用多线程来进行读写串口操作。
2.2 gps数据处理
gps数据处理模块的设计方案如图1所示。gps接收模块通过串口2将定位数据(nmea0183 ver2.0)传给开发板,然后应用程序对数据进行处理。在vs2005中,直接利用串口通信方法将定位数据读入,接着进行定位数据的分类,并提取出所需要的信息,同时将这些有用的信息传给主应用程序,主应用程序再将gps接收模块的控制信息整理成nema0183 ver2.0语句。
2.3 信号接收与处理
gps接收到位置信号后,系统将对gps的定位信息进行分解并提取出有用数据。gps信号接收和处理的过程是:通过串口2将gps输出的数据传递给开发板,开发板主程序获得目标当前的位置(经纬度坐标),将接收机获得的gps数据进行分解,从中得到目标当前的位置和格林威治时间(该时间加上8小时即为我国标准时间),再将当前位置在经纬度数据库查询,获得当前的具体地点名。
经纬度随着开发板的移动是不断变化的,在控件显示时要设定一个timer来更新值,本程序设置的是1s,如果在实际应用中移动速度非常快的话可以把timer更新值设得更小。
2.4 人机界面设计
系统采用三星tft显示屏,分辨率为420×272。人机界面基本功能包括串口选择控件、波特率选择控件、经纬度显示框、地点显示框、“搜星”按钮、“地点查询”按钮、文本框等,具体交互界面设计如图2所示。串口和波特率两个控件为串口选择和波特率的选择,其中串口选择控件提供串口l和串口2进行选择;波特率控件提供有三种设置,分别为4800、9600、19200。“搜星”按钮为打开对应串口,开始从gps接收模块接收数据。“地点查询”按钮用来显示当地的实际地点名,当搜到星后,按这个按钮,通过查询经纬度数据库,就可以查到对应地名。最下面的文本框显示原始的数据流。
人机界面(human–machine interaction,简称hmi),是人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分。是指人和机器在信息交换和功能上接触或互相影响的领域或称界面所说人机结合面,信息交换,功能接触或互相影响,指人和机器的硬接触和软触,此结合面不仅包括点线面的直接接触,还包括远距离的信息传递与控制的作用空间。人机结合面是人机系统中的中心一环节,主要由安全工程学的分支学科安全人机工程学去研究和提出解决的依据,并过安全工程设备工程学,安全管理工程学以及安全系统工程学去研究具体的解决方法手段措施安全人机学。
3 操作系统移植
wince 5.0操作系统的移植主要是基于硬件平台进行bsp开发。bsp是基于wince 5.0平台系统的主要部分,它主要由一些源文件和二进制文件组成,又称主板支持软件包,它是一个主要由包含启动程序(bootloader)、oem适配层程序(oal)相关硬件设备的驱动程序的软件包,另外还可以把上层的应用也放到bsp中。在bsp内部,通过oal链接到系统核心,而驱动程序和系统配置文件是与oal层相互关联来完成驱动设备和配置系统的功能。在bsp外部,我们可以看到一个建立在硬件平台上的主板支持包。在开发过程中可以利用开发板运营商提供的bsp包进行操作系统的定制,定制完成后固化到nandflash中。
4 测试
因为开发板的串口2直接与gps接收模块的串口相连,所以串口设置选择串口2。波特率应与gps接收模块匹配,设置为4800。gps模块为上电即启动,并且不能关闭,所以点击“搜星”按钮即可接收数据。启动“搜星”按钮后1min左右,就能显示正确的经纬度。点击“地点查询”按钮,能正确显示地点信息。最下面的文本框可以显示原始的数据流。测试时实拍的照片如图2所示。
5 总结
文章以vs2005为软件平台,利用基于arm处理器的wince 5.0嵌入式开发平台和gps接收模块,通过合理使用串口通信,实现了gps数据信号的接收与解码,并利用触摸屏进行显示,已基本具备gps移动设备的雏形。

三星note8什么时候上市?三星note8最新消息:三星Note 8模型图遭曝,依旧后置指纹
AM5749高性别能Sitara ARM应用处理器简介
螺旋板换热器的型号简介及优缺点
俄罗斯自研Elbrus-8SV处理器性能实测
DSOX3034T维修是德示波器不开机维修
一种GPS移动设备的实现
中国移动已推动SPN形成了健壮的产业链
今日看点丨传华为Mate 60 Pro卫星通讯芯片由中电科下属研究院定制;苹果将包圆台积电年内所有 3nm 产能
无线网络摄像头+家庭私有云,引爆民用监控新市场
三星双卡双待手机E2152和Ch@t 322
为什么type-c接口的使用率会越来越高
Xilinx 助力华为加速云服务器
电动汽车充电桩联网解决方案
科技大佬齐谈人工智能,你关心的都在这里
杭州中欣晶圆首枚12英寸半导体硅抛光片下线 将加快大尺寸半导体国有化进程
信息时代下,云服务器是如何保障数据安全的
涡街流量计的选型建议
如何使用Python编写一个简单的程序
荣耀独立的阵痛期痛在哪里?
横河电流钳的使用注意事项