通常,GPS接收机被设计成为标准串口设备,不管是CF接口还是蓝牙接口,都被映射成为串口设备,因此,在程序员的眼中,只需如同一般的串口设备来对待即可(对于蓝牙GPS,当然我们也可以通过蓝牙API,在程序中完成设备搜索、映射工作,而减少用户手工处理的麻烦)。
借助前一篇文章“WinCE下的串口操作”提供的串口类库,我们可以很方便的建立一个GPS类库,但在这个工作之前,我们还是简单的看一下GPS设备的工作过程:
GPS是美国提供的一套基于卫星的全球定位系统,它由天空中运行着的24颗卫星组建的星座及多个地面注入站和监视站构成的控制/监视网构成,卫星采用 CDMA技术在两个频率上向地面广播测距码和导航数据,导航数据也称为星历,接收机可以从中获知卫星在发射信号时的位置,而测距码是一个伪随机序列,接收机通过自身产生的伪随机序列与其进行相关计算,可得到信号从卫星到接收机之间的传播时延,但这个时延是一个假时延,因为接收机不可能与卫星保持精确的时钟同步,而由于各个卫星是由自身携带的原子钟进行校准的,因此,虽然接收机与卫星时钟不同步,但可以通过增加一个卫星的方式来获得定位。也就是由四颗卫星的位置、四个伪时延,构成四个方程,来求解接收机的三维坐标和同步时间基点这四个位置量。
这个过程看起来有点复杂,但庆幸的是,程序员不需要做与此相关的工作,它们都被GPS接收机自己处理了,它自己就可以接受并处理卫星信号,并完成定位,同时把定位结果通过接口以某种电文格式递交给计算机,因此,计算机只需要简单的打开GPS连接的串口,去等待接收机不断的把数据送过来就可以了。
定位数据是以什么格式送过来的,我们在购买GPS接收机的时候,它都会标注一个数据格式标准,通常所见的都是采用NMEA(美国国家航海电子协会)标准,它规定了如下几种电文格式:
1.GPRMC:报告接收机的经纬度、航速和航向信息,但没有高度值
2.GPGGA:报告接收机的经纬度、高度值、定位精度等信息,但没有航速和航向
3.GPGSV:报告接收机所观测到的卫星数量、信号质量、在天空中的方位和仰角、当前定位所采用的卫星编号等信息
4.GPGSA:报告接收机当前定位所采用定位方式、定位精度等信息,但这里的定位精度只是由卫星布局和采用的卫星数量所产生的几何偏差,并不是真正的定位误差
一般的GPS接收机都是同时产生这几种电文,以相同的时间间隔顺序的把这几种电文发过来,每条电文都是独立一行,并以$符号开头,后面附加电文标识及内容,具体的内容格式可以从[url]www.nmea.org[/url]网站或GPS接收机说明书上找到。
好了,不再赘述,我们来看程序,从说明书上我们查到GPS接收机的串口设置,依照该设置打开串口,启动一个工作线程,在该线程中不断的从串口读入数据行,分析得到定位信息、卫星状态、定位误差,并通过回调函数指针将这些信息送回主线程就可以了。
整个过程非常简单,没有任何特别之处,读一下程序就非常清楚了。
好了,现在你就可以为自己的PocketPC+GPS开发自己的定位、跟踪程序了,可以做一个自己的路线跟踪程序、电子罗盘、并配合自己打造的电子地图,出行远足,是不是很爽!我还做过一个GPS卫星轨迹的记录程序,把一天内GPS卫星在天空中的运行路线记录下来,也很有意思!
WinCE下的GPS设备操作
时间: 2024-12-22 14:26:57
WinCE下的GPS设备操作的相关文章
WinCE下调试串口的动态复用
车机项目中用到了很多串口外设,如DVD机芯.GPS.蓝牙.雷达和胎压监测等,而主CPU(TCC89XX)与小MCU(STM32)之间也是通过串口通讯的.一时之间,串口使用有点捉襟见肘的感觉,只能把调试串口拿出来用做普通串口. 调试串口用作普通串口本身没什么问题,之前在S3C2410上也做过.当时是把2410的调试串口强制改为普通串口,系统启动后调试串口就无法正常使用了.但目前的项目仍在进一步完善之中,调试串口还是相当重要的,经常需要通过它,抓一些TRACE来分析和定位问题
WinCE下WIFI模块AR6102的调试
今天调试了一款SDIO的无线网卡AR6102,由于该芯片是板载的,所以写了一个应用程序,模拟无线网卡的插入拔出,然后简单修改了SDHC驱动,检测应用程序发出的模拟卡插拔的动作,并控制芯片的PWR和RST引脚.幸运的很,改完之后,就可以用了.通过应用程序模拟无线网卡的插入动作后,在超级终端看到了加载无线网卡驱动的打印信息,在控制面板的网络连接里也看到了WIFI设备,AR6K_SD1. 用于测试的无线AP是Cisco的,加密方式是WPA-Personal,根据路由器的设置,选
WinCE下串口虚拟软件
前段时间,介绍了一个WinCE下的串口调试软件Serial Splitter Mobile 3.2.它的主要功能是将一个物理串口克隆成N个,供不同的应用程序使用,以监视物理串口收发的数据.今天介绍一个WinCE下的串口虚拟软件VSPD Mobile 4.2.它的特点是可以创建N对纯虚拟串口,并实现虚拟串口对之间的通讯.很多GPS玩家应该都用过这软件. VSPD Mobile 4.2使用截图如下: 如上图所示,通过VSPD,创建了一对虚拟串口COM
wince下,使用C# ,把数据写入txt文件中
问题描述 wince下,使用C# ,把数据写入txt文件中 各位高手大家好,我在wince下,使用C# ,把数据写入txt文件中,所有的代码都执行完成,也没有发生任何错误,但是我打开txt里面是空白的,没有任何数据,不知其解,望高手不吝指教,谢谢.写入txt的代码如下: FileStream fs = null; StreamWriter sw = null; try { fs = new FileStream(fileName, FileMode.Append, FileAccess.Writ
armv4-在vs2008下编译wince下的版本,未找到下列环境变量: 1&;amp;gt;$(CePlatform)
问题描述 在vs2008下编译wince下的版本,未找到下列环境变量: 1>$(CePlatform) 1>------ 已启动生成: 项目: mono, 配置: Debug CHSINT SDK For WinCE 6.0 (ARMV4I) ------ 1>正在编译... 1>dummy.cpp 1>C:UsersAdministratorDesktopwxWidgets-2.8.12wxWidgets-2.8.12includewx/msw/wince/librarie
开发环境-求大,神想问一下vs2008如何配置wxWidgets能使在wince下运行?
问题描述 求大,神想问一下vs2008如何配置wxWidgets能使在wince下运行? 本人已经在vs2008下配置好啦wince开发环境,想在vs2008的win32智能设备项目下用wxWidgets 解决方案 http://blog.csdn.net/subo86/article/details/4905852
帮忙看一下这段代码,WINCE下开发
问题描述 写了如下一小段程序,在wince下开发,用模拟器,运行的时候,提示SQLiteerror:nosuchtabletb_isbncj....望各位高手帮忙看一下usingSystem;usingSystem.Linq;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Form
请教用VS2008写的在wince下的串口程序
问题描述 请教用VS2008写的在wince下的串口程序,用串口调试工具收发都正常,但是和单片机M16连接看不到的字符.M16单片机发送的字符用串口调试工具,发送是正常啊 解决方案 解决方案二:友情帮顶下!顺便学习学习!解决方案三:帮顶,原来研究过WINCE,但是不够深入解决方案四:俺也要写CE程序了,解决方案五:该回复于2010-12-01 13:15:41被版主删除解决方案六:求一个WINCE下的串口调试工具~~看到网上有很多,就是下载不了,急~~~麻烦有的能给我发一个吗~~64904840
wince下DataGrid如何给指定行上颜色(C#)
问题描述 wince下DataGrid如何给指定行上颜色(C#)分不多,各位大神帮帮忙啊,弄了好几天了 解决方案 解决方案二:好像不可以设置.给个链接,解决方案三:网上的能找到的都弄过了,还是没玩出来能不能给个例子呢解决方案四:DataGridWiew选中单元格时整个背景变色实例//绑定显示数据privatevoidFrm_Main_Load(objectsender,EventArgse){dgv_Message.DataSource=newList<Fruit>(){//绑定数据集合new