GPS收星程序说明search read.pudn.com.doc

上传人:laozhun 文档编号:2392449 上传时间:2023-02-17 格式:DOC 页数:55 大小:411.50KB
返回 下载 相关 举报
GPS收星程序说明search read.pudn.com.doc_第1页
第1页 / 共55页
GPS收星程序说明search read.pudn.com.doc_第2页
第2页 / 共55页
GPS收星程序说明search read.pudn.com.doc_第3页
第3页 / 共55页
GPS收星程序说明search read.pudn.com.doc_第4页
第4页 / 共55页
GPS收星程序说明search read.pudn.com.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《GPS收星程序说明search read.pudn.com.doc》由会员分享,可在线阅读,更多相关《GPS收星程序说明search read.pudn.com.doc(55页珍藏版)》请在三一办公上搜索。

1、目 录摘要.ABSTRACT.目录.第一章 绪论1.1 全球定位系统概述1.2 手持机介绍1.3 GPS-OEM模块1.4 GPS检测系统1.5 研究的内容及安排1.5.1 研究设计的内容1.5.2 设计方法及安排第二章 系统整体方案设计 2.1 设计语言 2.2 FORMVIEW设计2.3 用户操作版块设计2.4 收信版块设计2.5 GPS基本定位数据显示版块设计2.6 绘图版块设计2.6.1 信噪比条形图版块设计2.6.2 卫星方位图版块设计第三章 NMEA0183协议 3.1 信号循环 3.2 $GPGGA 3.3 $GPGSA 3.4 $GPRMC 3.5 $GPGSV第四章 GPS-

2、OEM模块卫星收信测试软件设计 4.1 MSComm控件 4.2 添加控件 4.3 串口编程设计 4.3.1 收信软件设计 4.3.2 信号显示软件设计第五章 GPS-OEM模块卫星定位测试软件设计 5.1 GPS-OEM模块卫星定位数据显示版块组成 5.2 语句判别软件设计 5.3 GGA语句数据提取软件设计 5.4 GSA语句数据提取软件设计 5.5 RMC语句数据提取软件设计第六章 GPS-OEM模块卫星信噪比测试软件设计 6.1 GSV语句之星号及信噪比数据提取软件设计 6.2 文本显示软件设计 6.3 信噪比条形图软件设计第七章 GPS-OEM模块卫星方位图测试软件设计 7.1 GS

3、V语句之星号、仰角及旋角数据提取软件设计 7.2 圆及文本显示软件设计 7.3 卫星方位图软件设计第八章 GPS-OEM模块测试系统界面用户操作版块设计 8.1 串口选择设计 8.2 波特率选择设计 8.3 打开GPS按钮设计 8.4 关闭GPS按钮设计 8.5 暂停按钮设计 8.6 清除按钮设计 8.7 保存按钮设计 8.8 回放按钮设计第九章 总结与展望参考文献附录致谢第一章 绪论1.1 全球定位系统概述全球定位系统是美国国防部为了军事目的而建立的全球性的卫星导航定位系统。它是有史以来美国仅次于“星球大战”、“阿波罗登月”的第三大航天项目。整个GPS系统由三个主要部分组成1-2:(1)空间

4、部分;(2)地面控制部分;(3)用户设备部分。GPS卫星系统由24颗分布均匀的卫星组成,这些卫星分布在6个轨道平面上,卫星的高度大约2万公里,每颗GPS卫星都装有精密的原子钟,并且有接受地面控制信息和向用户发射卫星星历和测距信号的功能,GPS卫星发射的卫星信号十分复杂,其中包含粗码(C/A码)和精码(P码)。地面控制部分是GPS卫星工作的控制系统,它由检测战、主控站、地面注入站和辅助通讯系统等五部分组成,其主要功能是监控GPS卫星,调整偏离轨道的卫星回到正确的位置,向GPS卫星注入卫星星历信息等。用户设备部分主要指各种各样的GPS卫星接收机。GPS接收机依靠接收GPS卫星发射的卫星信号(其中包

5、括卫星星历信息、GPS时间信息、载波相位信息和码信息等)来确定地面点的三维坐标。基于军事目的的GPS系统在该系统刚刚建立时就引起了各方面的关注。在系统还没有完全建成时就已经有许多民用部分利用该系统进行导航和定位。现在该系统已经广泛地应用在航海、航空、地质、测绘、交通、通讯、能源、保安、邮电等各个行业3。近几年来的时间证明,GPS系统是一个高精度、全天候和全球性的无线电导航定位和定时的多功能系统,它已经发展成为多领域(陆地、海洋、航空、航天)多模式(GPS、DGPS、RGPS、LADGPS、WADGPS、WWDGPS等)、多用途(在途导航、精密定位、卫星定轨、灾害监测、资源调查、工程建设、市政规

6、划、海洋开发、交通管制等)、多机型(测地型、全站型、授时型、车载型、船载型、星载型、弹载型等)的高新技术国际性产业4。随着科学技术和经济的发展,GPS将会得到空前的发展5。现有的卫星定位系统除了美国的GPS以外,还有 俄罗斯的GLONASS 等系统;欧洲拟建的”伽利略系统”将是世界上第一个完全向民用开放的全球性卫星定位系统;中国的北斗卫星导航定位系统由2000 年、2003 年发射的3 颗”北斗”卫星组成,作为一个区域性的定位系统,仅能满足当前陆、海、空运输导航定位的需求,在覆盖范围及用户数量等方面受到一定的限制。1.2 手持机介绍GPS手持机是利用GPS基本原理设计而成的体积小巧、携带方便、

7、能够独立使用的全天候实时定位导航设备。性能良好的手持机必备的条件是:灵敏度高,存贮量大,外部接口齐全。GPS手持机按用途可分为陆用型、空用型和海用型。陆用型一般没有内置地图,主要利用航路点记录,选择相应航路点可自动生成路线。内置天线使得机型小巧,它是应用最广的GPS设备;空用型提供全球空域图和地域图,灵敏度极高,适用于在高速行进的飞机中定位;海用型内置全球海图,超大屏幕,提供可固定在船体上的配套支架和天线。目前普通消费类GPS手持机的价格较高,从几千元到上万元不等,它们基本上都有12个并行通道和数据功能,有些甚至能与计算机通信,可以上传/下载GPS信息,并且使用精确的地图软件,在PC的屏幕上进

8、行实时位置跟踪或自动导航。美国的GARMIN (高明)公司是世界上生产GPS产品的专业厂家,在GPS定位导航领域一直走在世界最前列4151目前有多种手持产品,它生产的GPS手持机的销量居世界第一。据了解国内目前尚无手持机生产厂家,大多是代理国外的产品或对国外产品进行软件汉化。GPS信号接收机在人们生活中的应用,将是一个难以用数字预测的广阔天地,手持式的GPS接收机,将成为旅游者的忠实导游。有人预言,GPS将改变我们的生活方式。今后,所有运载器都将依赖于GPS。GPS就像移动电话、计算机互联网一样将对人们的生活产生巨大的影响。 GPS接收机基本结构1.3 GPS-OEMGPS-OEM是英文Glo

9、bal Position SystemOriginal Equipment Manufacturer的缩写。由于本次设计是对GPS-OEM作检测,所以进行一些简要介绍。GPS-OEM简言之,就是能接收卫星信号的设备。目前生产的GPS-OEM具有定位迅速,授时精度高,体积小、重量轻,重捕获能力强,功耗低等特点。GPS-OEM的主要技术指标有如下:1.接收通道2.跟踪卫星数3.接收频率4.接收灵敏度5.输出协议6.数据更新率7.同步脉冲8.差分输入9.实时定位精度10.差分后精度11.首次定位时间12.重捕获时间13.环境要求14.电源电压一般GPS-OEM提供基于NMEA-0183版本2.0标准

10、的软件接口。GPS-OEM输出的秒脉冲与GPS卫星的铯钟同步,其精度达几十纳秒。目前GPS-OEM已商品化,与晶体钟相比,句有价格低、精度高的优点,因此,应用前景广阔。1.4 GPS检测系统GPS检测系统就是对GPS-OEM模块收到的信号进行检测以及一系列的处理,包括原始信号的显示,定位信息的提取以及对重要定位参数数据的处理。数据处理这方面又包含文本数据显示和绘图显示。1.5 研究的内容及安排1.5.1 研究设计的内容本次要研究设计的内容就是制作一款GPS-OEM模块测试系统,简言之就是一款GPS检测系统。该系统要具有基本的系统功能,要能接收到卫星信号、基本定位数据显示、信噪比图以及卫星方位图

11、。另外该系统的主要功能是实时检测,一般的GPS-OEM模块测试系统无数据存储功能,本次设计还另外研究了如何让系统具有数据存储功能。1.5.2 设计日程安排2006年12月2007年1月完成外文翻译以及文献综述2007年3月5号2007年3月20号毕业设计开题,熟悉设计工具方法,总体方案设计2007年3月21号2007年3月底做开题交流准备,根据交流意见修改设计方案2007年4月1号2007年4月10号做出整体设计框架,进行初步编程2007年4月11号2007年4月20号进一步修改完善编程2007年4月21号2007年4月底测试软件系统初步成型2007年5月7号2007年5月20号进行软件调试,

12、修改并解决测试系统出现的问题2007年5月21号2007年5月底撰写论文,参与软硬件联调2007年6月整理论文,准备毕业答辩第二章 系统整体方案设计2.1 系统设计语言设计一款GPS-OEM模块测试软件就涉及到编程,编程则涉及到编程语言。C+保持了C的简洁、高效和接近汇编语言等特点,对C的类型系统进行了改革和扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。由于C+与C保持兼容,这就使许多C代码不经修改就可以为C+所用,用C编写的众多库函数和使用软件可以用于C+。C+既支持面向过程的程序设计,又支持面向对象的程序设计。由于本人以前学过C+及C+的特点,决定本次设计采用C+语言。采

13、用Microsoft Visual C+6.0进行编程设计。2.2 FORMVIEW设计首先启动运行Microsoft Visual C+6.0,新建一个MFC AppWizard(exe),工程名为gpstest,然后在MFC应用程序向导的步骤1里的应用程序类型选择为单文档,其他步骤都为默认选项,直到最后个步骤基类选择CFormView类(如图2-1)。等向导几个步骤结束时,就会出现一个工作空间,如图2-2。位于中间的那个方框上面写着“TODO:在这个对话框里设置表格控制。”的就是FORM,ID为IDD_GPSTEST_FORM。正如所写的就是在上面设置对话控制来实现一系列的功能,比如在上面

14、设置控件,然后写入代码等等。鉴于本次设计的内容,决定把该FORM界面分为用户操作版块、收信版块、文本数据显示版块和绘图版块。以下几节讲述这些内容。 图2-1 MFC应用程序向导步骤第6步 图2-2 gpstest工程工作空间2.3 用户操作版块设计用户操作版块就是给用户拿来操作控制整个对话框用的。在该版块设计一些基本的操作按钮和组合框选项。设计“串口选择”组合框,选择COM1-COM8之间的正确串口,才能让GPS-OEM模块让PC机连起来,从而才能让信号接收进来。设计“波特率”组合框,选择2400-29200之间的正确波特率,才能让信号在对话框中显示出来。设计“打开GPS”按钮,按下该按钮,打

15、开了串口,信号就会收进来,就会进行有用数据提取处理,然后就会在收信版块、文本数据显示版块和绘图版块进行一系列的显示。设计“关闭GPS”按钮,按下该按钮,关闭了串口,停止接收信号,收信版块、文本数据显示版块和绘图版块都会停止显示并恢复到初始状态。设计“暂停”按钮,按下该按钮,暂时停止接收信号,而收信版块、文本数据显示版块和绘图版块显示的东西就会保持不变。设计“保存”按钮,按下该按钮,就会保存收信版块中的数据,让数据存储到计算机硬盘中的指定的位置。设计“回放”按钮,按下该按钮,就会把存储中的数据显示到收信版块中,进而让文本数据显示版块显示数据或绘图版块能显示出信噪比和卫星方位图。设计“清除”按钮,

16、按下该按钮,就会把收信版块中的数据以及绘图版块中的内容清除掉。关于如何给按钮写代码来实现按钮功能将在第八章详细介绍。2.4 收信版块设计在对话框中放一编辑框控件,该编辑框就是所谓的收信版块了。设置好编辑框控件的一些属性,比如多行、能垂直滚动等。当选择好串口和波特率时,打开GPS,原始信号就能在收信版块中显示出来。关闭GPS时,该版块就要无显示。关于如何编程将在第四章详细介绍。2.5 GPS基本定位数据显示版块设计该版块被设计用来显示一些重要的GPS定位信息。该版块主要由一些静态文本控件组成,这些控件用来显示日期、时间、高度、经度、纬度、当前状态(是否定位)、水平精度、垂直精度、位置精度以及对地

17、速度。关于怎么显示将会在第五章详细介绍。2.6绘图版块设计改版块又分为信噪比条形图版块和卫星方位图版块。绘图版块被用来设计显示关于卫星的信噪比、仰角、旋角等有关信息。绘图版块上无控件,都是靠编程来画图。2.6.1 信噪比条形图版块设计该版块被用来设计显示卫星的信噪比,把信噪比画成条形图,给人直观的感觉。另外如果确定定位的话,还将显示出是哪几颗星定的位,一般来说能定位的卫星的信噪比大于40的。具体如何编程、显示将在第六章详细介绍。2.6.2 卫星方位图版块设计该版块被用来设计显示卫星的方位情况。画一个以GPS-OEM模块所在地的上空为圆心的圆(以能收到信号的卫星中离圆心最远的那颗到圆心的距离为半

18、径,当然画出来的圆整体比例是缩小的),根据卫星的仰角和旋角来画出卫星在该圆的位置,也就是方位图。具体如何编程、显示将在第七章详细介绍。 第三章NMEA0183协议3.1 NMEA0183介绍 NMEA即National Marine Electronics Association的缩写,意为(美国)国家航海电子协会。该协议是为了在不同的GPS导航设备中建立统一的RTCM标准。NMEA0183语句以ASC格式输出,传输速率可自定义。缺省波特率为4800。传输长度表:传输长度=传输总字符数/每秒传输数波特率每秒传输数语句最大字符1200120GPGGA722400240GPGSA654800480

19、GPGSV2109600960GPRMC70在读取输出语句时数据之间最好用“,”区分,不要按位读取,以保证应用程序的兼容性。3.2 信号循环卫星发过来的信号语句其实是个循环,基本上是$GPGGA、$GPGSA、$GPRMC组合循环,差不多等4个$GPGGA-$GPRMC循环后,就会出现$GPGGA、$GPGSA、$GPGSV、$GPRMC语句组合。当然每个语句里都有有用的数据。以下几节将会详细介绍。3.3 $GPGGA先来介绍下GGA语句的格式:$GPGGA,MM,*hhUTC时间,hh mm ss格式(定位它的) 纬度dd mm mmmm 格式(非0) 纬度方向 N或S 经度ddd mm m

20、mmm 格式(非0) 经度方向E或W GPS状态批示0未定位 1无差分定位信息 2带差分定位信息 使用卫星号(0008) 精度百分比 海平面高度 *大地随球面相对海平面的高度 差分GPS信息差分站ID号 0000-123GPS语句结束的标志下一个GPS语句开始的标志3.4 $GPGSA$GPGSA语句格式:$GPGSA,*hh模式M手动,A自动 当前状态 1无定位信息,22D 33D PRN号0132位置精度水平精度垂直精度3.5 $GPRMC$GPRMC语句格式:$GPRMC,*hh定位时UTC时间hhmmss 格式 状态A=定位V=导航 经度ddmm.mmm 格式 经度方向N 或S 纬度d

21、ddmm.mmmm 纬度方向E或W 速率 方位角(二维方向指向,相当于二维罗盘) 当前UTC日期ddmmyy 格式 太阳方位太阳方向3.6 $GPGSV $GPGSV一般有2-3句。不管是2句还是3句,$GPGSV前两句语句的格式是:$GPGSV,*hhGSV语句的总数目 当前GSV语句数目 显示卫星的总数目0012 卫星的PRV号星号 卫星仰角 卫星旋角信噪比如果有3句的话,第3句的格式其实还和前2句是差不多的,只是前面2句都包含4颗星的数据,第3句则包含1-4颗星的数据,总之每句GSV语句最多包含4颗星的数据,而显示的卫星总数目最多则是12。第四章 GPS-OEM模块卫星收信测试软件设计4

22、.1 MSComm控件MSComm控件的全称是MicroSoft Communications Control。正如其名,该控件是个通信控件,该控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem)还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效实用的通信程序。4.1.1 串口通信基础知识一般说来,计算机都有一个或多个串行端口,它们依次为com1、Com2、,这些串口还提供了外部设备与pC进行数据传输和通信的通道。这些串口在CPU和外部设备之间充当解释器的角色。当字符数据从CPU发

23、送给外部设备时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,要编写通信程序只需知道通信控件提供给Windows通信API函数的接口即可。换句话说,只需设定和监视通信控件的属性和事件即可。4.1.2 Mscomm控件介绍MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事

24、件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。查询方式

25、实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲

26、区返回和删除字符。 Output 向传输缓冲区写一个字符串。下面拿CommPort和Settings当例子来描述下:CommPort属性: 设置并返回通讯端口号。语法: object.CommPortvalue (value 一整型值,说明端口号。)说明: 在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。Settings 属性: 设置并返回波特率、奇偶校验、数据位、停止位参数。语法::object.Settings = value。说明:当端口打开时,如果 v

27、alue 非法,则 MSComm 控件产生错误 380(非法属性值)。Value 由四个设置值组成,有如下的格式:“BBBB,P,D,S”,BBBB 为波特率,P为奇偶校验,D为数据位数,S为停止位数。value 的缺省值是:9600,N,8,1。4.2 添加控件 当一个工程项目刚建立时,该工程的控件条里是没有MSComm控件的。如图4-1所示,但编写代码时又需要用到MSComm控件,就必须把该控件添加到工程中去。首先单击“工程”选项中的“增加到工程”,选择“Components and controls”,然后双击弹出的项目框里的“Registerd ActiveX Controls”,选择

28、“Microsoft Communications Control,version6.0”(如图4-2),单击“Insert”,在跳出来的对话框里单击“OK”。 这样就在控件条里多了个类似电话机的图标(如图4-3)。该图标就是MSComm控件了,在工程中也自动生成了mscomm.cpp源文件和mscomm.h头文件(如图4-4)。 图4-1 图4-2 图4-3 图4-4 这样就可以运用MSComm来进行串口编程了。4.3 串口编程设计4.3.1 收信软件设计如图4-3,在界面上放置一个MSComm控件,命名IDC_MSCOMM1,然后单击建立“建立类向导”,在弹出的“MFC CLASSWIZA

29、RD”,选择Message Maps,在Object IDs选择IDC_MSCOMM1,然后在Messages中选择OnComm,单击Add Function,为该成员函数取命为OnComm(如图4-5)。再在Member Variables中为IDC_MSCOMM1设置成员变量m_ctrlComm1。 图4-5 图 4-6在gpstestView.h中加入 “ CString m_strReceived;”,这样在整个gpstestView.cpp中都可以运用该变量了。在OnComm函数中加入如下代码:void CGpstestView:OnComm() / TODO: Add your c

30、ontrol notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048; /设置BYTE数组 An 8-bit integer that is not signed. if(m_ctrlComm1.GetCommEvent()= =2) /事件值为2表示接收缓冲区内有字符 variant_inp=m_ctrlComm1.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为Cole

31、SafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;klen;k+) safearray_inp.GetElement(&k,rxdata+k); /转换为BYTE型数组for(k=0;klen;k+) /将数组转换为Cstring型变量 BYTE bt=*(char*)(rxdata+k); /字符型 m_strReceived+=char(bt); /加入到对应字符串中 接下来如何打开串口进行通信呢?因为NMEA0183数据传输缺省波特率为4800,所以在SETSETTINGS中默认值的“9600,n,8,1”

32、改成“4800,n,8,1”。我们在界面上放置一按钮,命名“打开GPS”,ID为IDC_START_BUTTON,为该按钮加入如下代码:void CGpstestView:OnStartButton() / TODO: Add your control notification handler code hereif(m_ctrlComm1.GetPortOpen() /如果串口打开的话m_ctrlComm1.SetPortOpen(FALSE); /关闭串口m_ctrlComm1.SetCommPort(3); /设置端口号,如果与外界连的是端口3的话,选择com3if( !m_ctrlCo

33、mm1.GetPortOpen() /如果串口关闭着的话m_ctrlComm1.SetPortOpen(TRUE);/打开串口elseAfxMessageBox(cannot open serial port);m_ctrlComm1.SetSettings(“4800,n,8,1”); /波特率4800,无校验,8个数据位,1个停止位m_ctrlComm1.SetInputMode(1); /1:表示以二进制方式检取数据2:十六进制检取数据 m_ctrlComm1.SetRThreshold(1); /参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

34、m_ctrlComm1.SetInputLen(0); /设置当前接收区数据长度为0 m_ctrlComm1.GetInput(); /先预读缓冲区以清除残留数据通过上面两步编程,已经成功完成收信软件设计。4.3.2 信号显示软件设计信号已经成功收到,但如何让信号显示出来呢?在界面上放一EDIT控件,在MFC ClassWizard为其添加成员变量m_data。把它属性中的样式设成多行、垂直滚动(如图4-7)。该EDIT控件就负责用来显示收到的信号了。只要在OnComm函数中的添加一句话就能轻松让信号显示出来了。因为m_strReceived已经是收到的信号字符串了,所以只要让m_data=m

35、_strReceived,就能让信号在EDIT里显示出来。最后还得加句UpdateData(false)。然后编译无错的话,就运行程序,显示的信号如4-8所示。 图4-7 图4-8图4-8所示,信号是源源不断地收进来,为此设想让EDIT里隔几秒显示新收进信号然后,这样用户一直看到的是新收到的信号。为此在MFC ClassWizard中为CGpstestView增加message:WM_TIMER,添加OnTimer函数,如图4-9。图4-9然后再为CGpstestView添加send()函数,类型void。一般情况下一组GPS信号都是起始于GGA,而终止于RMC,这样来构成信号循环,而一组信号

36、的输入差不多正好是一秒。也就是说过了一秒,要让第一组信号显示过后马上删掉进行第二组信号的显示。假设startLF是int型,是缓冲区中第一个GPS语句结束标志LF的位置,也就是下一个GPS语句的开始标志;而endCR是int型,是第一个GPS语句结束标志CR的位置;从图4-10中大家可以清楚地看到从startLF到endCR之间可以是一组GPS语句,也可以是一个GPS语句。_GPGGA_GPGSA_GPGSV_GPRMC_GPGGA startLF endCR/startLF . . endCR/startLF 图4-10 GPS语句循环因此在send()里写入如下代码:void CGpste

37、stView:send()while(m_strReceived.Find(0x0d)!=-1)&(m_strReceived.Find(0x0a)!=-1)/循环读取GPGGA定位语句 int startLF=m_strReceived.Find(0x0a); /startLF 缓冲区中第一个GPS语句结束标志LF的位置 就是下一个GPS开始的标志int endCR=m_strReceived.Find(0x0d); /endCR 第一个GPS语句结束标志CR的位置if(startLFSetTextColor(RGB(250,0,0); /文本显示的颜色pDC-SetBkMode(TRANSPARENT); pDC-TextOut(550,20,GPS基本数据显示:); pDC-SetTextColor(RGB(0,128,64); pDC-TextOut(500,44,日期:); /500,44是显示日期的界面位置pDC-TextOut(500,74,时间:);pDC-TextOut(500,104,高度:);pDC-TextOut(500,134,经度:);pDC-TextOut(500,164,纬度:);pDC-TextOut(625,44,当前状态:);pDC-TextOut(625,74,水平精度:);pDC-TextOut(625,104,垂直精度:);pD

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号