2022年网络龙超WM的GPS数据采集系统的设计方案与实现 .pdf

上传人:H****o 文档编号:25325650 上传时间:2022-07-11 格式:PDF 页数:42 大小:2.01MB
返回 下载 相关 举报
2022年网络龙超WM的GPS数据采集系统的设计方案与实现 .pdf_第1页
第1页 / 共42页
2022年网络龙超WM的GPS数据采集系统的设计方案与实现 .pdf_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《2022年网络龙超WM的GPS数据采集系统的设计方案与实现 .pdf》由会员分享,可在线阅读,更多相关《2022年网络龙超WM的GPS数据采集系统的设计方案与实现 .pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、毕 业 设 计题目基于 WM6 的 GPS数据采集系统的设计与实现学院信息科学与工程学院专业网络工程班级网络 0701学生龙超学号 20071208030指导教师 郑艳伟二一一年六月十日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 42 页I / 42 摘要GPS 、 主 控 制 站 (Master Monitor Station 、 地 面 天 线 (Ground Antenna所组成。用户设备部分即GPS 信号接收机,由主机、天线、电源组成。GPS 并不是最早的无线电导航系统,最早人们采用的是长波信号,波长长达26 公里,因为长波

2、信号可以轻易地被电离层反射,所以美国的OMEGA 系统用了八个发射器就把信号覆盖了全球。不过因为信号波长比较长,定位精度受到很大影响: OMEGA 系统的精度只有六公里。为提高定位精度,只有提高无线电信号频率,但是借助电离层反射的全球覆盖就受到了影响:波长越短的信号,直线传输特性越强,同时不能被电离层反射。通过把波长减小到2.6 公里, LORAN 系统倒是把定位精度提高到450M了,可全球只有10%的面积被信号覆盖。自从 1957年有了卫星,科学家的兴趣自然就转到这上面来了:卫星可以发射短波长信号,穿透电离层覆盖半个地球的面积。如今随着全球卫星导航定位系统的市场竞争加剧,正在形成的四大全球卫

3、星导航定位系统同台竞技的格局已经显现出来了,也就是美国的GPS、俄罗斯的格罗纳丝、欧洲的伽俐略和中国的北斗系统。2009-2018 年,以 GPS 为代表的卫星导航应用产业前景看好,成为继移动通信和互联网产业之后的第三大IT 经济增长点。随着国际市场的快速发展,中国导航产业面临极大机遇。中国正处于高速发展期,城市变化快、公路建设速度快、汽车保有量增长快,对导航产品的需求也就不断增大。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 42 页- 2 - / 42 随着 3G 的发展和国内汽车市场持续升温,GPS 手机市场也前景看好,预计20

4、18年,GPS手机市场份额将超过百分之十。1.2手机GPS前景随着智能移动终端特别是智能手机的快速普及,具有定位和导航功能的手机正日益受到消费者的追捧。单一导航设备的市场迅速被导航手机所取代,相信不久的将来导航手机就会在人们的生活中普及。导航功能也会像相机,MP3 一样成为一款手机应用, Google 公司推出的 “Turn -By- TurnNavigation ”和苹果公司推出的手机定位服务和手机广告服务也充分说明了GPS与智能手机的结合是极具潜力的。在我国,具备GPS 定位导航功能的手机销量近年来一直呈增长态势。市场研究机构 In-Stat 预计,近几年GPS 技术在手机领域有应用将呈爆

5、炸式增长。中国GPS手机市场将持续上升,预计2018 年中国 GPS手机市场总体规模将达到4200万台,市场占有率将超过20%。互联网消费调研中心ZDC 对中国 GPS 手机市场发展现状及用户关注情况进行分析,2018 年月 1-8 月,GPS 手机用户关注度增长明显,8 月较 1 月增长近 10 个百分点,如图1.1 。72.9 的非 GPS手机用户表示有购买GPS手机的打算。可见,手机GPS技术市场的应用前景非常可观。图 1.12018 年 1-8 年中国手机市场GPS手机关注趋势1.3 选题的目的与设计要求随着 3G时代的到来, GPS也成为了继音乐、照相之后手机的又一款热门的应精选学习

6、资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 42 页- 3 - / 42 用,智能手机与 GPS的结合必将推动GPS产业走向一个新的高潮,GPS手机也必将成为一种潮流和趋势。因此,对于手机GPS的研究很有必要性。本文的设计目的在于研究基于Windows Mobile 6.0 的系统上 GPS导航的相关工具和方法,使用dotNET2008 开发环境,使用Visual C#编程实现对 GPS数据,包括经度、纬度、卫星个数、精确时间等信息的实时采集,并保存到手持设备数据库 。考虑到卫星的时钟与接收机时钟之间的误差,实际上有4个未知数, X、Y、Z

7、 和钟差,因而需要引入第4 颗卫星,形成4 个方程式进行求解,从而得到观测点的经纬度和高程。四个方程式中各个参数意义如下:x、y、z 为待测点坐标的空间直角坐标。xi 、yi 、zi (i=1 、2、3、4 分别为卫星 1、卫星 2、卫星 3、卫星 4 在 t 时刻的空间直角坐标,可由卫星导航电文求得。di (i=1 、2、3、4 分别为卫星 1、卫星 2、卫星 3、卫星 4 到接收机之间的距离。ti (i=1 、2、3、4 分别为卫星1、卫星 2、卫星 3、卫星 4 的信号到达接收机所经历的时间。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9

8、 页,共 42 页- 5 - / 42 c 为 GPS信号的传播速度 分别为卫星 1、卫星 2、卫星 3、卫星 4 的卫星钟的钟差,由卫星星历提供。Vto 为接收机的钟差。由以上四个方程即可解算出待测点的坐标x、y、z 和接收机的钟差Vto 。事实上,接收机往往可以锁住4 颗以上的卫星,这时,接收机可按卫星的星座分布分成若干组,每组4 颗,然后通过算法挑选出误差最小的一组用作定位,从而提高精度。由于卫星运行轨道、卫星时钟存在误差,大气对流层、电离层对信号的影响,以及人为的SA 保护政策,使得民用GPS 的定位精度只有100M 。为提高定位精度,普遍采用差分GPS(DGPS技术,建立基准站(差分

9、台 进行 GPS 观测,利用已知的基准站精确坐标,与观测值进行比较,从而得出一修正数,并对外发布。接收机收到该修正数后,与自身的观测值进行比较,消去大部分误差,得到一个比较准确的位置。实验表明,利用差分GPS,定位精度可提高到5M 。2.2GPS 数据格式一般民用 GPS使用的是 GPS系统的 L1 载波,频率为 1575.42 MHz。在这个载波频率上面以调相方式加载了两种不同的伪随机噪声码:C/A 码和 P码。C/A 码是用于民用的测距码,码长为1023个码元,即 1023次从数字零到数字1 的跳动,这 1023个码元每秒重复 1000次,即 1.023MHz, 或每一百万分之一秒跳动一次

10、。P码是军用码,码长非常长,码速为10.23MHz,即每千万分之一秒跳动一次。由于 GPS接收机通过对比码元的跳动来计算从卫星到接收机的时间,然后再转换成距离,显而易见, P码的时间精度高了10倍,距离精度也就高了10倍:现代信号处理技术计算码元跳动的时间精度是码宽的百分之一,一百万分之一秒折合出来的距离是 300M ,它的百分之一就是3M 。而 P码的精度是这个数值的十分之一,即0.3M 。换句话说,在计算某个卫星距离接收机的实际距离的时候,C/A 码的理论精度是 3M 。接收机获取了与卫星的距离,并不能计算出自己的位置,因为它不知道卫星在发射电波时的位置,因此在卫星载波上面,还加载了一个5

11、0Hz的导航电文,这个导航电文包括了:卫星的轨道参数、时钟参数、轨道修正参数、大气对GPS信号折射的修正值等等。 GPS接收机就是通过这些参数计算出某一时刻某颗卫星在空间中的位置,然后再确定自己与卫星的距离,然后再计算自己的实际位置。导航电文总长 1500比特,在 50Hz发送的情况下,每一个循环周期是30 秒。NMEA 协议是为了在不同的GPS全球定位系统)导航设备中建立统一的BTCM海事无线电技术委员会)标准,由美国国家海洋电子协会 $GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,0000*1F 。每个字段含义如表2.

12、1所示:表 2.1 $GPGGA 解读字段例值说明字段 0 $GPGGA 语句 ID GPS 定位信息字段 1 092204.999 UTC 时间, hhmmss.sss 字段 2 4250.5589 纬度 ddmm.mmmm 字段 3 S 纬度 N北纬)或S南纬)字段 4 14718.5084 经度 dddmm.mmmm 字段 5 E 经度 E东经)或 W 西经)字段 6 1 GPS状态, 0=未定位, 1=非差分定位, 2=差分定位, 3=无效 PPS,6=正在估算。字段 7 04 正在使用的卫星数量00 - 12)字段 8 24.4 HDOP 水平精度因子 0.5 - 99.9)字段 9

13、 19.7 海拔高度 例:$GPGSA,A,3,01,20,19,13,40.4,24.4,32.2*0A ,每个字段含义如表 2.2所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 42 页- 7 - / 42 表 2.2 $GPGSA 解释字段例值说明字段 0 $GPGGA $GPGSA ,语句, ID 当前卫星信息。字段 1 A 定位模式, A=自动手动2D/3D ,M=手动 2D/3D 。字段 2 3 定位类型, 1=未定位, 2=2D 定位, 3=3D 定位。字段 3 01 PRN 码伪随机噪声码),第1 信道正在使用的

14、卫星PRN 码编号 00)字段 4 20 PRN 码伪随机噪声码),第2 信道正在使用的卫星PRN 码编号 00)字段 5 19 PRN 码伪随机噪声码),第3 信道正在使用的卫星PRN 码编号 00)字段 6 13 PRN 码伪随机噪声码),第4 信道正在使用的卫星PRN 码编号 00)字段 7 04 PRN 码伪随机噪声码),第5 信道正在使用的卫星PRN 码编号 00)字段 8 24.4 PRN 码伪随机噪声码),第6 信道正在使用的卫星PRN 码编号 00)字段 9 19.7 PRN 码伪随机噪声码),第7 信道正在使用的卫星PRN 码编号 00)字段 10 PRN 码伪随机噪声码),

15、第8 信道正在使用的卫星PRN 码编号 00)字段 11 PRN 码伪随机噪声码),第9 信道正在使用的卫星PRN 码编号 00)字段 12 PRN 码伪随机噪声码),第10信道正在使用的卫星PRN 码编号 00)字段 13 PRN 码伪随机噪声码),第11信道正在使用的卫星PRN 码编号 00)字段 14 PRN 码伪随机噪声码),第12信道正在使用的卫星PRN 码编号 00)字段 15 40.4 PDOP 综合位置精度因子0.5 - 99.9)字段 16 24.4 DOP 水平精度因子0.5 - 99.9)字段 17 32.2 VDOP 垂直精度因子 例:$GPGSV,3,1,10,20,

16、78,331,45,01,59,235,47,22,41,069,45*70 ,每个字段含义如表 2.3所示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 42 页- 8 - / 42 表 2.3$GPGSV 解读字段例值说明字段 0 $GPGSV $GPGSV,语句 ID,可见卫星信息字段 1 3 本次 GSV 语句的总数目 1 - 3)字段 2 1 本条 GSV 语句是本次GSV 语句的第几条1 - 3)字段 3 10 当前可见卫星总数00 - 12)前导位数不足则补0)字段 4 20 PRN 码伪随机噪声码)01 - 32) 前

17、导位数不足则补0)字段 5 78 卫星仰角 00 - 90)度 前导位数不足则补0)字段 6 331 卫星方位角 00 - 359 )度 前导位数不足则补0)字段 7 45 信噪比 00 99)dbHz 字段 8 01 PRN 码伪随机噪声码)01 - 32) 前导位数不足则补0)字段 9 59 卫星仰角 00 - 90)度 前导位数不足则补0)字段 10 235 卫星方位角 00 - 359 )度 前导位数不足则补0)字段 11 47 信噪比 00 99)dbHz 字段 12 22 PRN 码伪随机噪声码)01 - 32) 前导位数不足则补0)字段 13 41 卫星仰角 00 - 90)度

18、前导位数不足则补0)字段 14 069 卫星方位角 00 - 359 )度 前导位数不足则补0)字段 15 45 信噪比 $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50 每个字段含义如表 2.4所示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 42 页- 9 - / 42 表 2.4 $GPRMC 解读字段例值说明字段 0 $GPRMC $GPRMC ,语句 ID,推荐最小定位信息字段 1 024813.640 UTC 时间, hhmmss.

19、sss格式字段 2 A 状态, A= 定位, V=未定位字段 3 3158.4608 纬度 ddmm.mmmm ,度分格式 前导位数不足则补0)字段 4 N 纬度 N北纬)或S南纬)字段 5 11848.3737 经度 dddmm.mmmm ,度分格式 前导位数不足则补0)字段 6 E 经度 E东经)或W 西经)字段 7 10.05 速度,节, Knots 字段 8 324.27 方位角,度字段 9 150706 UTC 日期, DDMMYY格式字段 10 235 磁偏角, 000 - 180)度 例:$GPVTG,89.68,T,M,0.00,N,0.0,K*5F ,每个字段含义如表2.5所

20、示表 2.5 $GPVTG 解读精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 42 页- 10 - / 42 字段例值说明字段 0 $GPVTG $GPVTG ,语句 ID,地面速度信息字段 1 89.68 运动角度, 000 - 359,前导位数不足则补0)字段 2 T T=真北参照系字段 3 315 运动角度, 000 - 359,前导位数不足则补0)字段 4 M M= 磁北参照系字段 5 0.00 水平运动速度 0.00)前导位数不足则补0)字段 6 E N=节, Knots 字段 7 N 水平运动速度 0.00) 例:$GP

21、GLL,4250.5589,S,14718.5084,E,092204.999,A*2D ,每个字段如表2.6所示。表 2.6 $GPGLL 解读字段例值说明字段 0 $GPGLL $GPGLL ,语句 ID ,地理定位信息字段 1 4250.5589 纬度 ddmm.mmmm ,度分格式 前导位数不足则补0)字段 2 S 纬度 N北纬)或S南纬)字段 3 14718.5084 经度 dddmm.mmmm ,度分格式 前导位数不足则补0)字段 4 E 经度 E东经)或WMicrosotf Visual Studio 2008。Visual Studio 是微软公司推出的开发环境,Visual

22、Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。(2Windows Mobile 6.5。 Windows Mobile ,是Microsoft 用于Pocket PC 和Smartphone 的软件平台。 Windows Mobile 将熟悉的 Windows 桌面扩展到了个人设备中。Windows Mobile 是微软为手持设备推出的“ 移动版Windows ”,使用Windows Mobile 操作系统的设备主要有PPC 手机、 PDA、随身音乐播放器等。Windows Mobi

23、le 操 作 系 统 有 三 种 , 分 别 是Windows Mobile Standard、 Windows Mobile Professional ,Windows Mobile Classic。(3Microsotf ActiveSync4.5。微软的同步软件ActiveSync 可以同时支持PPC和微软智能手机 (Smartphone, 它能方便地在PC 与 PPC 或智能手机间方便地进行数据同步.这是 Windows Mobile 设备(与 Symbian相比极具竞争力的优势 .而与 PC的同步对 Symbian手机来说简直是个恶梦 .ActiveSync 不仅可以同步文件 ,电子

24、邮件及日程等 ,更有着许多额外的功能如同步AvantGo,SMS 等.另外,Windows Mobile 设备的用户还可以通过 PC来访问互联网 .ActiveSync 可以说是 PC与移动设备间的一座桥梁。(4 GPSID。MS 宣称 GPS Intermediate Driver可以屏蔽所有硬件的差异,屏蔽了所有硬件的差异意味着这个库只是支持通用的NMEA ,厂商的 NMEA 就不能解读出来了。凡事都是有优缺点,技术选型主要取决于需求。对这个指南针的需求比较简单,只是需要取出方位角信息,使用GPS Intermediate Driver可以提高开发效率。(5 FackGPS。FackGPS

25、是 Windows Mobile 6 SDK 中提供的一个小工具 , 为调试Windows Mobile 系统的GPS 应用程序但没有GPS 设备的提供了方便,由于缺乏GPS 真实设备,所以,这里选择了FackGPS 。GPSID 的所有设置信息都保存在注册表中,可以通过修改注册表来更改GPSID 的设置。其中有个一个设置,可以让GPSID 从一个包含 NMEA 命令的 .txt 文件读取 GPS 数据,而不需要从 GPS 设备读取数据。 Fake GPS 的工作原理就是修改注册表的 GPSID 设备,让 GPSID 从一个文本文件读取GPS 数据。而对于我们开发的应用程序来说,跟访问真实的设

26、备并没有两样。(6 SQL Server CE。SQL Server CE (SQL Server 2005 Compact Edition 是微软推出的一个适用于嵌入到移动应用的精简数据库产品,Windows Mobile 开发人员能够使用 SQL Server CE 开发出将数据管理能力延展到Window Mobile 移动设备上的应用程序。虽然 SQL Server CE占用的磁盘空间只有3到 5兆左右,但是它功能并没有像它的容量那样大幅度缩水。SQL Server CE 不但提供了完整的SQL 语法,包括内部联接、外部联接和子查询,还内置了数据同步技术的支持。有一点要注意的是,SQL

27、Server 2005 Compact Edition除了可以作为移动数据库在Windows Mobile 设备上精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 42 页- 12 - / 42 运行外,它也支持在PC上存放数据,为桌面的应用程序提供数据支持。(7 Gmap.NET。GMap.NET 是一个强大、免费、跨平台、开源的.NET 控件,它在 Windows Forms 和 WPF环境中能够通过Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等实现寻找路径、地

28、理编码以及地图展示功能,并支持缓存和运行在 Mobile 环境中。 GMap.NET 是一个开源的GEO 地图定位和跟踪程序。就像谷歌地图、雅虎地图一样,可以自动计算两地的距离,定位经纬度,与Google 地图不同的是,该工程是建立在C#语言 WinForm 基础上的。可以对地图放大缩小,进行城市标记等。控件还以绘出两地的行车线路或者步行线路等,而且能够算出两地的距离。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 42 页- 13 - / 42 3 需求分析3.1 工程概述本系统主要实现在Windows Mobile 6.5 平台上

29、实时的获取GPS数据,包括:经度,纬度,时间,卫星个数,海拔高度,地理位置等相关的信息,并在地图上显示相应的地理位置,然后将数据保存在手机的数据库中。3.2 功能需求(1 GPS数据实时获取:能够在Windows Mobile 平台上实现 GPS功能的打开与关闭,实时的获取当前的GPS数据。(2 GPS 数据存储:能够将获取到的GPS 存储在手机的数据库 GPS 显示:实时采集的数据能够以用户界面的形式显示,最好是以地图的形式展示。(4 查找功能:对于数据库中标定了的地理位置,能够提取出当前地理位置的名称。(5 同步功能:手持设备数据库中的数据能够传送到计算机系统数据库。3.3 性能需求(1

30、实时性:由于GPS 本身的特点需要很高的实习性,因此,系统运行时须确保获取 GPS数据的实时性。(2 准备性:将获取的 GPS数据的误差控件在一定的范围内。3.4 运行需要本系统是基于Windows Mobile 平台开发。运行界面是Windows Mobile 窗口界面。数据库是适用于手机的SQL Server CE。同时,应该具有适当的容错功能。遇到不可恢复的系统错误,也能保证数据的完整性。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 42 页- 14 - / 42 3 总体设计3.1 系统总体结构该部分主要介绍了系统的整体结构

31、,如图 3.1。一旦开启 GPS,主程序从中间驱动 GPSID 中获取GPS 数据,并将信息显示在用户界面,同时,调用地图控件的相应函数,查找相应的地理位置信息,并在地图上显示。最后,将数据存入手机的数据库中。图 3.1 系统总体结构精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 42 页- 15 - / 42 根据需求分析对系统进行建模,画出系统的用例图图 3.2)、时序图 图 3.3)以及类图 图 3.4)。图 3.2 用例图图 3.3 时序图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -

32、-第 20 页,共 42 页- 16 - / 42 图 3.4 类图3.2 手机GPS模块目前,市场上提供的GPS 方案主要分为单芯片、套片和模块。其中单芯片是将GPS 的两部分射频与基带集成在一颗芯片上,套片是将单独的射频与基带封装在一起,而模块则是在射频与基带之外,加入了必要的外围器件,封装成独立的产品,这样,在手机开发过程中,GPS 部分不需要太大的开发工作量,设计者只需将输出信号与周边硬件做个转换即可。本文是基于Windows Mobile 平台,手机设备集成了 GPS模块。3.3 数据库设计本系统的数据库主要用存储手机GPS 记录的地理位置信息,其主要信息包括:经度、纬度、时间、卫星

33、个数以及相应地理位置等。因此,数据库中只用一张表即可。如表 3.1所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 42 页- 17 - / 42 表 3.1data表列名数据类型是否为空描述id Int 否主键 自增)latitude String 是纬度longitude String 是经度time datetime 是当前时间satellites string 是卫星数position String 是地理位置3.4 GPS 软件设计3.4.1数据采集方法手机中的 GPS 模块一旦启动,会连接卫星接收信号,通过算法计算出位

34、置等信息,然后以 NMEA data 的格式输出。手机GPS模块就是将接收到的卫星信号转换成NMEA date的设备。目前,开发手机软件有3 种获取 GPS数据的方法:直接使用串口连接 GPS接收器、 GPS Intermediate Driver 、使用第三方类库 获取 GPS数据。GPS Intermediate Drive( 中间驱动程序, GPSID是一个位于应用程序和GPS 设备中间层的设备驱动。GPSID 是对串口操作进行了封装,因此对于系统层来说它是一个普通的驱动,是一个插在GPS 设备与应用程序之间的系统中间件。这样的好处是使开发人员不需要通过串口直接访问GPS 设备,而是访问

35、GPSID 提供的 API 函数,然后再由 GPSID 去访问 GPS 设备。这样一来,编写出来的 GPS 应用程序就具有设备无关性了,也使到只要应用GPSID 就可以用相同的代码去访问几乎所有类型的 GPS接收器了。但现在随着WinCE 系统新版本的升级, WinCE 系统内置了 GPS Intermediate Driver。Windows Mobile 5.0 以上的系统,都内置了GPS Intermediate Driver。能够很方便的获取GPS数据。通过它我们能够很方便的取得GPS数据,而且开发基于 GPS 定位系统的WinCE 应用程序也变得简单多了。目前,GPS 中间驱动程序

36、(GPSID正成为导航设备开发者手中的利器。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 42 页- 18 - / 42 GPSID 的 API 函数主要有两类:一类是gpsapi.dll 函数: GPSOpenDevice 、GPSCloseDevice、 GPSGetPosition、 GPSGetDeviceState 。 另一 类 是 :coredll.dll 函数 : CreateEvent、 CloseHandle、 WaitForSingleObject 、 WaitForMultipleObjects 、EventM

37、odify 。3.4.2 GPS 类设计GPS.cs: 封装 GPS操作类,比如 Open(,Close(,Connect(。GpsDeviceState.cs :用于获取目前 GPS设备的状态信息。GpsPosition.cs :每次 GPS数据取得后,都会放入该类。LocationChangedEventArgs.cs :一旦位置改变,即可将新的GpsPosition获取。DeviceStateChangedEventArgs.cs 设备状态改变事件。3.4.3 窗体类设计MainForm.cs:主窗体内包含显示地图控件,菜单等。Search.cs 查找窗体。Gps.cs 显示获取到的 G

38、PS信息及状态。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 42 页- 19 - / 42 4 详细设计4.1 模拟GPS数据(1FackGPS安装。在 Windows Mobile 6 SDK 安装目录下 .Windows Mobile 6 S找到 FakeGPS.CAB在 windowsmobile 中安装。如图 4.2 图 4.2 FackGPS安装(2FackGPS 运行。运行Fake GPS,GPSID 的所有设置信息都保存在注册表中,可以通过修改注册表来更改GPSID 的设置。 Fake GPS 的工作原理就是修改注册

39、表的 GPSID 设备,让 GPSID 从一个包含 NMEA 命令的 fakegpsdata.txt 文件读取GPS 数据,而不需要从 GPS 设备读取数据。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 42 页- 20 - / 42 图 4.3 FackGPS运行图(3 fakegpsdata.txt中数据$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21 $GPGSA,A,3,08,27,10,28,13,19,2.6,1.4,2.3*3E $GPGSV,3,1,9,8,71,307,

40、43,27,78,59,41,3,21,47,0,10,26,283,40*77 $GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42 $GPGSV,3,3,9,134,0,0,0*46 $GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,*21 $GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75 4.2 GPS 类(1 GpsPo

41、sition.cs position定义了位置信息,其实这个类是大而全的类,把通用的 NMEA 可以分析的信息全部放到这个类里面。如图4.1 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 25 页,共 42 页- 21 - / 42 图 4.1 GpsPosition.cs 结构(2 GpsDeviceState.cs定义 GPS设备的状态public enum GpsServiceState : int Off = 0, On = 1, StartingUp = 2, ShuttingDown = 3, Unloading = 4, Unini

42、tialized = 5, Unknown = -1 (3 Gps.cs :Gps 对象表示一台Gps 的设备, gps.Open( 。为打开设备,开始接受 GPS信息, gps.Close(。为关闭该设备。 gps.DeviceStateChanged += new DeviceStateChangedEventHandler(gps_DeviceStateChanged。和 gps.LocationChanged += new LocationChangedEventHandler(gps_LocationChanged。表示订阅设备状态变化信息和位置变化信息。从GpsPosition的类

43、定义知道,当位置发生变化,也就是回调gps_LocationChanged 的时候,可以取出经纬度,海拔等多方面的信息。因此只要订阅该消息就可以完成几乎所有的GPS开发。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 42 页- 22 - / 42 /调用 API 的函数声明 : #region PInvokes to gpsapi.dll DllImport(gpsapi.dll static extern IntPtr GPSOpenDevice(IntPtr hNewLocationData, IntPtr hDeviceSta

44、teChange,string szDeviceName, int dwFlags。#endregion / 打开 GPS 设备,准备从设备获取数据 public void Open( if (!Opened / 创建 GPS 相关事件 newLocationHandle = CreateEvent(IntPtr.Zero, 0, 0, null。 deviceStateChangedHandle = CreateEvent(IntPtr.Zero, 0, 0, null。 stopHandle = CreateEvent(IntPtr.Zero, 0, 0, null。 gpsHandle

45、= GPSOpenDevice(newLocationHandle, deviceStateChangedHandle, null, 0。 /创建线程 if (locationChanged != null | deviceStateChanged != null CreateGpsEventThread(。 / 关闭 GPS设备 public void Close( if (gpsHandle != IntPtr.Zero GPSCloseDevice(gpsHandle。 gpsHandle = IntPtr.Zero。精选学习资料 - - - - - - - - - 名师归纳总结 - -

46、 - - - - -第 27 页,共 42 页- 23 - / 42 if (stopHandle != IntPtr.Zero EventModify(stopHandle, eventSet。 lock (this if (newLocationHandle != IntPtr.Zero CloseHandle(newLocationHandle。 newLocationHandle = IntPtr.Zero。 if (deviceStateChangedHandle != IntPtr.Zero CloseHandle(deviceStateChangedHandle。 deviceS

47、tateChangedHandle = IntPtr.Zero。 if (stopHandle != IntPtr.Zero CloseHandle(stopHandle。 stopHandle = IntPtr.Zero。 / 查询设备状态 public GpsDeviceState GetDeviceState( GpsDeviceState device = null。 IntPtr pGpsDevice = Utils.LocalAlloc(GpsDeviceState.GpsDeviceStructureSize。 Marshal.WriteInt32(pGpsDevice, 1。精

48、选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 42 页- 24 - / 42 Marshal.WriteInt32(pGpsDevice, 4,GpsDeviceState.GpsDeviceStructureSize。 int result = GPSGetDeviceState(pGpsDevice。 if (result = 0 device = new GpsDeviceState(pGpsDevice。 Utils.LocalFree(pGpsDevice。 return device。 (4 DeviceStateChan

49、gedEventArgs.cs 设备状态改变的事件参数 public class DeviceStateChangedEventArgs: EventArgs public DeviceStateChangedEventArgs(GpsDeviceState deviceState this.deviceState = deviceState。 public GpsDeviceState DeviceState get return deviceState。 private GpsDeviceState deviceState。 (5LocationChangedEventArgs.cs 地理

50、位置改变的事件参数 public class LocationChangedEventArgs: EventArgs public LocationChangedEventArgs(GpsPosition position 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 29 页,共 42 页- 25 - / 42 this.position = position。 public GpsPosition Position get return position。 private GpsPosition position。 4.3 数据存储设计将获取

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁