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卫星在天空中的运行路线记录下来,也很有意思!
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值