实现GPS接收机与微机间的通信
- 格式:pdf
- 大小:153.67 KB
- 文档页数:3
实现GPS 接收机与微机间的通信Realization of Communication between GPS Receiver and PC尹鹏飞 李 军(解放军理工大学气象学院 南京 211101)【摘 要】 基于全球定位系统(GPS)接收机的基本工作原理及其通信协议,讨论了MSCom m 控件的属性、方法,以美国GARMIN 公司的GPS 25接收机为例详细介绍了如何利用该控件实现GPS 接收机与微机间的串口通信方法。
【关键词】 MSComm 控件,GPS 接收机,串口通信ABSTRACT O n the basic o f basis w or king principle of G PS receiv er and the co mmunicatio n pr oto col ,this paper presents the attr ibutiv es and met ho d of M SCo mm contr ollwa re.With the ex ample of G PS25r eceiv er ma de by GA R M IN Company ,how t o use the contr ollw ar e to implement the ser ial co mmunicatio n betw een GP S receiv er and PC is g iv en a detailed descript ion.KEYWORDS M SComm contr ollwar e ,GP S receiv er ,ser ial communicatio n GPS 主要有3大组成部分,即空间卫星部分、地面监控部分和用户接收部分。
用户接收部分中的接收机工作原理比较简单:接收机不断接收定位导航卫星发送来的信息,通过自身内部电路的处理,按照NM EA 0183协议将用户需要的信息,如经度、纬度、UT C 及卫星星历发送给用户。
而用户方必须有相应的设备与之连接以读取发送来的数据信息,一般是通过计算机的串口进行读取的,要通过编写相应的串口通信程序得以实现。
因此,对于用户来说,通信程序能否成功地读取到接收机中的数据信息是至关重要的一步。
下面以美国GARM IN 公司的GPS 25接收机为例,介绍如何利用微软公司的M SComm 控件来实现GPS 接收机与微机间的串口通信。
GPS25能同时跟踪12颗GPS 卫星,导航数据每秒更新一次,其主要参数包括:波特率4800b/s;数据格式为:1位起始位、8位数据位、1位停止位、无奇偶校验位。
GPS 接收机一般采用美国国家海洋电子协会制定的NM EA0183协议进行通信,在NM EA0183协议中,数据采用ASC Ⅱ标准,以串口异步方式传送,通信速率可选择1200、2400、4800或9600b/s 。
GPS 25具有通用的NM EA 0183ASC Ⅱ码接口格式,它输出很多语句,我们主要是利用GPS 进行定位,因此,在这里将提取定位语句GPGGA 。
定位语句GPGGA 的语句格式及语句说明如下: 语句格式$GPGGA ,〈1〉,〈2〉,〈3〉,〈4〉,〈5〉,〈6〉,〈7〉,〈8〉,〈9〉,〈10〉,〈11〉,〈12〉*hh 〈CR 〉〈LF 〉 语句说明$GPGGA $为所有GPS 语句的起始标志,GPGGA 为地址域值,代表GPS 定位语句 ●定位的U TC (世界标准时)时间,格式:hhm mss hh 表示小时值mm 表示分钟值ss 表示秒钟值 ●纬度值,格式为:dddmm .mm mm ddd 表示度(。
)mm.mmm m 表示分(’) ●纬度半球,北纬或南纬(N/S) ●经度值,格式为dddm m .m mmm ddd 表示度(。
)mm.mm mm 表示分(’) ●经度半球,东经或西经(E/W) ●GPS 性能指标0=定位无效,1=无差分且定位有效 ●卫星使用数,00~08●水平精度亏损,1.0~99.9●天线海拔高度,-9999.9~99999.9m ●大地椭球面相对于海平面的高度 ●有关差分GPS 的数据*hh 总和校验〈CR 〉〈LF 〉回车换行下面是我们在潍坊试验期间采集到的一组数据,该数据是在高速运动的飞机上采集到的:$GPGGA,031641,3445.3834,N,11420.0791,E,1,07,1.3,3536.0,M ,-13.7,M ,,*5E 它表示在北京时间11h 16min 41s 时,飞机所在的位置为北纬* 20030916收到,20031231改回**尹鹏飞,男,1978年生,助教,研究方向:气象信息数据处理。
・10・ (总116) 实现GP S 接收机与微机间的通信 2004年34。
45.3834,东经114。
20.0791,海拔高度为3536m。
1 M SComm控件M SCom m是Microso ft Comm unications Contr ol 的简称,它是微软公司为了方便用户的串口通信编程而开发的一种ActiveX控件。
与其他许多Activ eX控件一样,MSComm控件也是使用一系列的属性与用户进行交互的,与程序设计相关的主要属性有以下一些: Comm Port:设置或返回通信端口号。
Setting s:设置通信的信息格式,顺序为“波特率,奇偶校验,数据位,停止位”。
如:Setting s=“4800,N, 8,1”。
Po rtOpen:设置或返回通信端口状态,TRUE表示打开,FALSE表示关闭。
Inputlen:设置或返回从接收缓冲区读取的字节数,0表示全部读取。
InputM ode:设置并返回GetInput()函数读取的数据类型,0表示文本类型,1表示二进制类型。
Input:返回并删除接收缓冲区中的数据。
Output:向发送缓冲区写数据。
Comm Ev ent属性读取或设置串口事件,类型为shor t,常见的串口事件如表1所示。
Rthreshold:设置并返回不触发OnCo mm事件时接收缓冲区被允许的最多字符数。
当缓冲区的字符数多于设置值时,则触发OnComm事件,当Rthreshold =0时,则禁止触发OnCom m事件。
当Rthr esho ld=1时,则接收缓冲区有一个或更多个字符时,就触发OnCom m事件。
M SCom m控件有两种工作方式:事件驱动方式和查询方式。
事件驱动方式是处理串行端口交互作用的一种非常有效的方法,利用M SCo mm控件的OnCom m事件,它的工作原理与中断方式类似,一旦有通信事件发生,不论是数据传输还是发生错误,都将引发该事件。
查询方式实际上还是属于事件驱动方式,通过检查Com mEvent属性的值来查询事件和错误。
如果程序较小这种方法更可取,我们将采用查询方式。
2 通信程序的编制由于GPS主要是用于定位,因此,主要提取了GPS定位语句(GPGGA),并分别从GPGGA语句中分离出时间、经度、纬度数据。
整体思路是:加入通信控件后,打开串口并对其进行初始化,读入相应的数据进行处理,不需要串口时将其关闭并保存接收到的数据。
具体步骤:在利用VC6中的M FC AppWizard产生一个单文档界面(SDI)的应用程序基本框架后,在“Pr oject/Add T o Project”菜单下按添加控件的一般方法,从中选M icr osoft Comm unications Control version 6.0,根据其向导完成控件的加入工作,这时将生成一个名为CM SCo mm的类,同时控件工具箱中多了一个形似电话的控件,该控件便是要加入的M SCom m控件,为M SCom m控件添加关联变量m Com Por t,以及OnCom m消息的响应函数OnComm()。
串口设置自定义一个对话框(Dialog)资源,在对话框上添加几组单选按钮,通过选择不同的单选按钮来选择用户所希望的端口号,波特率,数据位,起始位,奇偶校验位,以便使该程序适用于不同类型的GPS接收机。
部分程序代码如下:void CM yView::OnStart() //打开串口并对其进行初始化{UpdateData(TRUE);CString N="n"; //m BT,m S J,m TZ,m Com分别表示CString ALL; //波特率,数据位,停止位,端口号ALL=m BT+N+m SJ+m T Z;m ComPort.S etComm Port(m Com); //选择端口号if(!m Com Port.GetPortOpen())m ComPort.S etPortOpen(T RU E); //打开串口m ComPort.S etSettings(ALL); //设置波特率,数据位, //起始位,奇偶校验位参数m ComPort.S etInputM ode(0); //采用文本方式m ComPort.S etRTh res hold(255); //每收到255个字符产生OnComm事件m ComPort.S etInputLen(0); //从缓冲区读取全部字符UpdateData(FALSE);}数据处理方法将缓冲区中的内容送给一个字符串型变量,然后从这个字符串型变量中提取经、纬度等数据,VC中提供了功能完善的字符串操作指令。
根据上述的NM EA -0183数据标准格式,可以使用判断前缀的方法来识别不同的数据信息,前缀的判断可以使用Find()函数完成。
void CM yView::OnComm(){ VARIANT vRes ponse; if(m ComPort.GetCommEvent()=2) //判断是否是通信事件 { vRespons e=m ComPort.GetIn pon(); buff=CS trin g((uns igned char*)vResponse.par ray-> pvData) //将VARIANT型变量转化为字符串型变量 int S; //提取GPGGA信号(下转第14页)・11・第17卷 第3期 电脑开发与应用 (总117) 交换机是一台第三层交换机,通过它来划分不同功能的逻辑子网(图中有4个),并通过网络管理系统对整个网络进行集中式控制和管理,包括监控、调整网络的运行状态、自动分配用户的IP地址、统计网上信息流量及用户的使用情况等内容。
可直接连到骨干交换机的设备有路由器、各种服务器、中心工作站和二级交换机。
二级交换机可选用普通的第二层交换机。
第三级交换机可以选用第二层交换机或集线器。
4 交换机技术展望下一代网络将更加智能化,假如引入第四到第七层交换,那么网络就可识别网络上每一个数据包所属的应用和服务,然后应用这种信息把数据包传送到正确的路径。