单位文秘网 2021-10-14 08:12:31 点击: 次
摘要:本文以Holux GR-85 GPS 模块为例,介绍了在C#环境下,通过计算机标准串行RS-232接口与GPS模块组成GPS定位信息采集、显示、处理系统。该系统硬件设备接口简单、软件编程方便、系统可靠性好,为GPS的应用提供了一个简易途径。
关键词:GPS模块串口通信距离方位角
0 引言
近年来,GPS系统已经在大地测绘、海上渔用、车辆导航、精准农业等各个领域得到广泛的应用。目前,民用GPS设备包括精度可达毫米级的测量型接收机和定位精度为几十米的导航型产品。除了GPS接收机整机产品外,市场上还有很多不同类型、价格低廉的GPS模块产品。目前大多数GPS模块产品都是通过RS232串口进行数据传输的。这些数据包括经度、纬度、海拔高度、时间、卫星使用情况等基本信息。开发人员只要配备以单片机控制、显示设备或微机就可以完成整套的定位系统。
PC机的主要特点是具有较强的数据显示、分析处理能力,很好的人机界面和大容量的存储功能。因此通过串口实现通信,以PC机为控制器,以GPS模块为终端设备的方式可构成一GPS定位系统。
1 GPS简介
本系统中使用的GPS系统标准是NMEA-0183标准,NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association )为海用电子设备于1983年制定的标准格式。此标准格式采用ASCII制定的,数据传输以语句的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾未校验和,整条语句以回车换行符结束。
GPS模块只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息传送到连接到它的嵌入式主板串口之上,在没有进一步处理之前,传送的数据是一长串字节流信息。因此必须经过程序将其转化为有实际意义的,可供高层决策使用的定位信息数据。与其他通信协议类似,GPS模块都遵循NMEA-0183协议,GPS进行信息提取,必须明确其帧结构,然后才能根据其结构完成对各个定位信息的提取。其发送到串口的数据主要由帧头,帧尾和帧内数据组成。根据数据帧的不同,帧头也不相同,主要有“#GPGGA”,“$GPGSA”,“$GPRMC”等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况,大家所关心的定位数据如经纬度、速度、时间、航向等均以“$GPRMC”中获取得到。对于用户的应用程序来讲,要读取GPS模块的定位数据,无非是实现两个简单的步骤:①读取串口数据;②将读取的数据解析出来。
2 基于C#下的串口通信实现
2.1 串口的读取数据
我们以安装了Winxp操作系统连接GPS模块,用C#来实现读取GPS模块发过来的串口数据,最方便的方法是直接使用VS提供的SerialPort串口类,这个串口类提供一个DataRecieved事件响应机制,可以简单方便地读取串口数据,如:
GPS 模块默认会每1秒向串口发送一条$GPRMC语句。因此,对 GPS 模块不需要写串口,只需要读串口。GPS 模块软件部分的主要功能就是解析$GPRMC语句,获得其中的有用数据。
收到的串口数据是标准的string字符串,以“$GPRMC”开头的帧为例,收到的每一帧数据string都以回车换行符为结尾,可以以回车换行符为标志将数据string提取出来;而且这个数据帧的每个元素均以逗号分隔,可以通过逗号分隔将这个数据帧的每个元素提取到一个string数组里面进行进一步处理。如:语句解析实现方法如下:
在update_data函数中,通过Split()函数将从串口获得的数据分配到字符串数组中即可:
2.2 GPS定位信息的传递
在确定两台PC机的定位信息之后,就是如何将两台PC机的定位信息相互传递了。实现的方法有多种,最简单的就是利用TCP/IP网络协议来完成,也可采用GPRS网络来实现。本系统采用的是GPRS模块来实现两台PC之间的相互通信。
2.3 GPS定位信息的处理
在定位模块中,系统需要不断查询GPS缓冲区,来更新自己的定位数据,这个功能由一个定时器实现。当定时器中断发生,首先触发myserialPort1_DataReceived()事件,检查自身的GPS模块是否有可用的定位数据。如果有,则将GPS数据解析并放入GPS_info[]数组中;然后调用myserialPort_DataReceived()来查询GPRS模块是否已接收到了PC机的定位数据,如果有,则将解析数据并放入GPS_info[] 对象中,并同时放入数据库中。如果两个对象都有效,更新界面上的定位信息,并计算当前PC机和PC机原位置(已存入数据库)两个地点的距离和相对方向,如果两点距离大于规定的长度,则报警,并进入报警模式,如果距离合格,则退出报警模式。如果两点都有效,根据两点的经纬度坐标,在谷歌地图上显示当前位置,比例尺自适应。
计算两经纬度之间的距离,就是已知球体半径,计算两点之间的球面距离。
公式:设A(α1,β1),B(α2,β2)为地球上不同纬度不同经度的两点(纬度分别为α1,α2,经度分别为β1,β2,规定北纬时纬度为正,南纬时纬度为负,东经时经度为正,西经时经度为负)则A、B两地的球面距离为:
s=R*arccos(sina1sina2+cosa1cosa2cos|β1β2|)(R为地球半径)
根据这个公式,我们就能很轻松的计算出两台PC机之间的距离了。
3 结束语
通过本方法,可以将GPS定位导航信息从GPS接收机完整接收,并将所需信息从中提取,从而为实现飞行控制系统的导航控制提供数据采集。其实,GPS接收并提取的数据也可以为其它应用系统所应用,如电子地图、车载导航、智能交通、野外勘探等方面。只是在数据提取方面有所不同,经过修改,完全可以应用到其中。
参考文献:
[1]徐鑫,康波,吕炳朝,肖伟.电视技术[J].研究与开发2006(1)111-1114.
[2]王靖,纪元法,孙希延,伍建辉.桂林电子科技大学学报[J].2010[1]30-32.
(责任编辑:单位文秘网) )地址:https://www.kgf8887.com/show-220-96027-1.html
版权声明:
本站由单位文秘网原创策划制作,欢迎订阅或转载,但请注明出处。违者必究。单位文秘网独家运营 版权所有 未经许可不得转载使用