欢迎来到学术参考网

接收和处理GPS信号的计算机应用程序

发布时间:2015-12-17 10:55

摘 要:本文利用Visual Basic6.0语言,结合GPS通信技术,设计开发了一个接收和处理GPS通信信号的计算机应用程序。

关键词:GPS;VB6.0;接收板;控件

1  GPS

  GPS是全球卫星定位系统,在飞机、轮船、汽车等导航和定位等方面都有广泛的应用。在与地理信息系统结合之后,更能显现其神威。

  GPS接收器五花八门,但归根结底是一个工作原理:GPS接收板通过天线接收卫星发来的信号,然后由计算机对信号进行处理。我们这里讨论计算机与GPS板是分体的,通过串口两者相连。

  市面上有许多种GPS板,例如:Jupiter、Motorola、古野等等。这些板子都使用NMEA-0183格式作为输出。虽然都是NMEA-0183格式,但不同板子间可能略有差异。我们这里以Jupiter板为例。下面列出Jupiter板最常用的$GPGGA数据的格式:

  $GPGGA,162411,3826.1238,N,11726.3869,E,1,06,0.87,5.1,M,-3.2,M,,*63

  $:开始符;GP:鉴定码;GGA:格式码;162411:国际时间,16-时,24-分,11-秒;3826.1238:38是纬度,26.1238是纬分;N:北纬;11726.3869:117是经度,26.3869是经分;E:东经;1:质量因子,1=GPS,2=DGPS;06:使用的卫星数;0.87:HDOP,水平减弱值;5.1:天线高程;M:天线高程单位是米;-3.2:大地水准起伏面;M:大地水准起伏面单位是米;,:省略基站编号;*63:总和校验数。

  除了$GPGGA数据之外,还有$GPGSA、$GPGSV等类型的数据,这里就不一一介绍了。

  在本程序中,GPS板用RS-232连线通过Com2口与计算机相连。

2  VB6.0中通信控件MSComm介绍

  实现计算机通信涉及到很多方面的问题,例如设置输入输出缓冲区、不断地查询通信状态等等。MSComm控件封装了上述这些串行通信的底层过程。

  MSComm控件的主要属性

* CommPort属性:设置或返回通信控件对象所对应的串行接口代号。

* Settings属性:设置或返回含有波特率(传输速率,单位是bps,即位/秒)、校验位、数据位和停止位的字符串。

* PortOpen属性:设置或返回串行端口的状态。

* Input属性:从输入缓冲区读出字符并清除缓冲区被读的字符。

* InputLen属性:指定由串行端口读入的字符串长度。

MSComm控件只有一个事件OnComm。当MSComm控件产生动作,如接收到数据或出现错误时引发。  

3  应用程序界面

* 利用水平滚动条选取取样的时间间隔,1~10秒。在Text2显示确定值。

* Text3和Text4分别显示纬度和经度。

* Text5显示国际时间。

* Text6为使用的卫星数。

* Text7显示水平减弱值。

* 在最下面的Text1给出接收到的原始数据。

* 放置计时器Timer1和通信控件MSComm1。

* 命令按钮Command1、Command2。

窗体界面如下图所示:

4  程序代码

  由于篇幅所限,这里给出部分主要代码: 

Private Sub Form_Load()

On Error Resume Next

d = False

al = 1000

= "1"

With MSComm1

       .InputLen = 0

       .CommPort = 2

        '参数设置

       '9600:波特率

       'n:无奇偶校验位

       '8:一次传输8位

       '1:一个停止位

       .Settings = "9600,n,8,1"

       .PortOpen = True

End With

End Sub

Private Sub Timer1_Timer()

Dim strGPS_data As String

Dim strT3 As String

Dim strT4 As String

Dim klat As Integer, klon As Integer, kgga As Integer

strGPS_data =                        '取得输入缓冲区的数据

kgga = InStr(strGPS_data, "GGA")

If kgga < 3 Then Exit Sub                             '若不是$GPGGA数据则跳过

= strGPS_data                             '显示原始的$GPGGA数据

klat = InStr(strGPS_data, "N")

klon = InStr(strGPS_data, "E")

If klat > 10 Then

    strT3 = Mid(strGPS_data, klat - 10, 2) + "度" + _

          Mid(strGPS_data, klat - 8, 7) + "分"

    = strT3                               '纬度

End If

If klon > 11 Then

    strT4 = Mid(strGPS_data, klon - 11, 3) + "度" + _

          Mid(strGPS_data, klon - 8, 7) + "分"

    = strT4                               '经度

End If

= Mid(strGPS_data, kgga + 4, 2) + "时" + _

          Mid(strGPS_data, kgga + 6, 2) + "分" + _

          Mid(strGPS_data, kgga + 8, 2) + "秒"          '时间

= Mid(strGPS_data, kgga + 38, 2)              '使用卫星数

= Mid(strGPS_data, kgga + 41, 4)              '水平减弱值

End Sub

5 结论

  本文与硬件的关系密切,对从事自动控制、数据传输等领域研究的开发人员有参考价值。本程序完全依照实际GPS情况进行开发,对GPS信号的接收和处理得到了很好的实现,具有一定的实用价值。

参考文献:

.Computers Industry Engeering,2000.

上一篇:即时通信网络上的信息传播模型研究

下一篇:中波广播发射机无载波报警器