WinCE下的GPS设备操作

通常,GPS接收机被设计成为标准串口设备,不管是CF接口还是蓝牙接口,都被映射成为串口设备,因此,在程序员的眼中,只需如同一般的串口设备来对待即可(对于蓝牙GPS,当然我们也可以通过蓝牙API,在程序中完成设备搜索、映射工作,而减少用户手工处理的麻烦)。
借助前一篇文章“WinCE下的串口操作”提供的串口类库,我们可以很方便的建立一个GPS类库,但在这个工作之前,我们还是简单的看一下GPS设备的工作过程:
GPS是美国提供的一套基于卫星的全球定位系统,它由天空中运行着的24颗卫星组建的星座及多个地面注入站和监视站构成的控制/监视网构成,卫星采用CDMA技术在两个频率上向地面广播测距码和导航数据,导航数据也称为星历,接收机可以从中获知卫星在发射信号时的位置,而测距码是一个伪随机序列,接收机通过自身产生的伪随机序列与其进行相关计算,可得到信号从卫星到接收机之间的传播时延,但这个时延是一个假时延,因为接收机不可能与卫星保持精确的时钟同步,而由于各个卫星是由自身携带的原子钟进行校准的,因此,虽然接收机与卫星时钟不同步,但可以通过增加一个卫星的方式来获得定位。也就是由四颗卫星的位置、四个伪时延,构成四个方程,来求解接收机的三维坐标和同步时间基点这四个位置量。
这个过程看起来有点复杂,但庆幸的是,程序员不需要做与此相关的工作,它们都被GPS接收机自己处理了,它自己就可以接受并处理卫星信号,并完成定位,同时把定位结果通过接口以某种电文格式递交给计算机,因此,计算机只需要简单的打开GPS连接的串口,去等待接收机不断的把数据送过来就可以了。
定位数据是以什么格式送过来的,我们在购买GPS接收机的时候,它都会标注一个数据格式标准,通常所见的都是采用NMEA(美国国家航海电子协会)标准,它规定了如下几种电文格式:
1.GPRMC:报告接收机的经纬度、航速和航向信息,但没有高度值
2.GPGGA:报告接收机的经纬度、高度值、定位精度等信息,但没有航速和航向
3.GPGSV:报告接收机所观测到的卫星数量、信号质量、在天空中的方位和仰角、当前定位所采用的卫星编号等信息
4.GPGSA:报告接收机当前定位所采用定位方式、定位精度等信息,但这里的定位精度只是由卫星布局和采用的卫星数量所产生的几何偏差,并不是真正的定位误差
一般的GPS接收机都是同时产生这几种电文,以相同的时间间隔顺序的把这几种电文发过来,每条电文都是独立一行,并以$符号开头,后面附加电文标识及内容,具体的内容格式可以从www.nmea.org网站或GPS接收机说明书上找到。
好了,不再赘述,我们来看程序,从说明书上我们查到GPS接收机的串口设置,依照该设置打开串口,启动一个工作线程,在该线程中不断的从串口读入数据行,分析得到定位信息、卫星状态、定位误差,并通过回调函数指针将这些信息送回主线程就可以了。
整个过程非常简单,没有任何特别之处,读一下程序就非常清楚了。
好了,现在你就可以为自己的PocketPC+GPS开发自己的定位、跟踪程序了,可以做一个自己的路线跟踪程序、电子罗盘、并配合自己打造的电子地图,出行远足,是不是很爽!我还做过一个GPS卫星轨迹的记录程序,把一天内GPS卫星在天空中的运行路线记录下来,也很有意思!

 
Virace GPS Simulator V0.3.1 自述文件 2009.6.7 ====================================================================== Virace GPS Simulator是什么? ====================================================================== Virace GPS Simulator(以下简称为Virace)用软件模拟GPS接收器输出的GPS语 句,通过串行口输出到GPS应用软件。用鼠标或键盘控制Virace而模拟实际GPS接 收器的运动,或者重播已有的GPS航迹文件,从而在室内测试GPS导航软件等。 Virace具有手动实时控制及航迹重播两种方式。为了控制灵活方便,Virace定义 了许多鼠标及键盘动作。经过少许试用,就可以对照一个大比例尺的导航地图以 超过正常驾车速度行驶在市区及郊区路上。 ====================================================================== Virace运行在什么操作系统下? ====================================================================== Windows ====================================================================== Virace运行的方式 ====================================================================== 1. Windows下的GPS软件可通过Virace的虚拟串口直接测试。 2. Windows下有微软的Device Emulator,因此部分与Device Emulator兼容的 PPC、CE、SP软件可以在Device Emulator中模拟测试,由Virace提供GPS信号。 3. 可以将Virace输出到蓝牙的输出COM口,测试使用蓝牙GPS模块的PPC、SP及 Symbian S60等GPS软件。 4. Virace输出到PC的物理COM口,测试任何与PC物理串口连接的GPS设备 5. 用Virace将plt、gpx、kml、gpssim、trk格式的航迹文件,转为带速度、方 位角,及卫星状态的nmea文件,再在GpsGate内播放。 ====================================================================== Virace的特点 ====================================================================== 四种模式:自由驾驶模式 + 三种航迹重播模式(逐点重放航迹模式,手控速度 航迹模式,比例速度航迹模式)。运行中根据需要可在四种模式间无缝自由切换。 航迹文件支持plt、gpx(含gpx航迹及Garmin详细航线)、kml、gpssim、trk。 可将航迹文件另存为带速度、方位角,及卫星状态的nmea文件。 航迹重播时具有丰富的控制项,可快进、快退,选择某个段,反序,循环,亦可 人为加入左右偏移。 载入航迹时可选过滤掉点数少或距离小的段。 可选与PC版OziExplorer交互运行。通过Ozi API,在Ozi中双击地图上的某点, Virace就立即跳跃至该点(自由驾驶模式),或跳至离该点最近的航迹(航迹 重播模式);单击地图上的某点,则以当前速度向该点行驶(自由驾驶模式)。 最多3路COM口输出,加1路Ozi输出。每路的参数是独立选择的,且可以独立启停。 支持虚拟串口。与Eltima Virtual Serial Port ActiveX Control V2.5及对应的 Eltima Virtual Serial Port Driver兼容。注:Eltima Virtual Serial Port 是共享软件,一切权利归其所有人。Virace的发行包内不包括该虚拟串口驱动及 控件,请自行购买或下载试用版。 多种转向方式。鼠标滚轮,Ozi中单击,键盘左右箭头等。另有键盘45度及10度转 向键。键盘左右箭头及鼠标滚轮的转向灵敏度可自定义。 多个预设的速度键及上下箭头加减速,另外可随时暂停(速度为0,但依然输出GPS 信号)。 在退出时自动保存当前位置(经纬度、速度、方位角等)及所有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值