您的位置: turnitin查重官网> 工程 >> 工程质量 >VB语言下GPS导航数据提取并在MapX控件中显示实现

VB语言下GPS导航数据提取并在MapX控件中显示实现

收藏本文 2024-02-07 点赞:5100 浏览:12556 作者:网友投稿原创标记本站原创

摘 要:本文针对导航系统设计和开发过程中涉及到的GPS导航数据和MapX控件进行了介绍,并提出了利用VB语言进行定位信息的提取和在MapX控件中显示的方法。
关键词 :NMEA-0183;MapX;串口通讯;导航系统
Abstract: In this paper, the GPS nigation data and the MapX controls involved in nigation system design and development process are introduced, and the methods of location information extraction with VB language and its display in the MapX controls.
Keywords: NMEA-0183; MapX; serial communication; nigation system
2095-2104(2012)

1前言
随着社会经济的不断进步,科学水平的飞速发展,人们对类似车载GPS定位系统的位置怎么写作也越来越关注。GPS定位系统接收GPS卫星信号,并将解算的位置通过接口显示在电子地图上,就可以实现位置显示的基本定位功能。在本文中,我们将探讨如何在VB语言条件下,通过MapX控件来提取和显示GPS定位信息,从而为进一步的GPS定位怎么写作提供一个基础平台。

2 GPS导航数据格式与MapX控件介绍

2.1GPS导航数据格式

GPS导航数据主要是NMEA协议的数据,目前主要较新版本为 NMEA-0183,它是美国国家海洋电子协会为统一海洋导航规范而制定的统一标准,该格式标准已经成为国际通用的一种格式。NMEA-0183格式数据串的所有数据都采用SASCII文本字符表示,数据传输以“$”开头,后面是语句头。语句头由五个字母组成,分两部分,前两个字母表示“系统ID”,即表示该语句是属于何种系统或设备,后三个字母表示“语句ID”,表示该语句是关于何方面的数据。语句头后是数据体,包含不同的数据体字段,语句末尾为校验码 (可选),以回车换行符结束,也就是ACSII字符“回车”(十六进制的0D)和“换行”(十六进制的0A)。每行语句最多包含82个字符(包括回车换行符和“$”符号)。数据字段以逗号分隔识别,空字段保留逗号。

2.2 MapX控件

MapX控件是MapInfo公司提供的具有强大地图分析功能的Activex控件产品,由于它是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境,如 Visual Basic等。利用MapX控件能够简单快速地在软件中嵌入地图化功能,增强软件的空间分析能力,实现大部分地图编辑和空间分析的功能。
MapX为开发人员提供了一个快速、易用、功能强大的地图化组件。在VB等可视化开发环境中,只需要在设计阶段将MapX控件放入窗体中,并对其进行编程、设置属性、调用方法或相应事件,即可实现数据可视化、专题分析、地理查询、地理编码等各种丰富的地图信息系统功能。对MapX编程,不需要有任何MapBasic的知识,而且大多数任务可以通过简单的设置MapX控件的属性来完成。

3 GPS导航数据的提取

3.1 RS-232通信

RS-232串行通讯分为同步和异步两种模式,目前使用的仪器绝大部分都使用

源于:标准论文格式范例www.udooo.com

异步传输。RS-232也有相关的电气标准定义,在ITU(国际电信联盟)咨询机构CCITT(国际电话与电报顾问委员会)公布了RS-232标准之后,由EIA(电子工业联合会)制订。RS-232串口通讯的方法主要有以下几种方法:
(1)通过调用API函数实现串口通讯;
(2)利用Windows读写端口函数;
(3)利用第三方提供或自己编写的通信类;
(4)通过Windows串口通信组件,实现串口调用。
其中方法(4)较简单稳定,只需对串口进行简单配置,并且不需要了解其控件的内部源码,可以快速稳定的实现通讯及数据的提取。因此,本文采用最后一种方法。
在进行通讯之前,首先需要设置串口通讯的接口参数,包括设置通信连接端口号,该端口号在MSComm控件的Commport属性中设置(计算机一般只包括com1和com2两个端口,可通过计算机的设备管理器查看);初始化信息,该信息主要是通信的波特率、奇偶校验检查方式、数据位数和停止位,可在控件的Settings属性中设置(格式是“BBBB,P,D,S”,分别是波特率,奇偶校验,数据位数,停止位数);引发接收事件的字节数,亦即控件的RThreshold属性,该属性设置和返回引发接收事件的字节数;串行端口读入的字符串长度或者字节数,可在控件的InputLen属性中设置,Visual Basic 程序可使用控件的Input命令将存放在输入缓冲区的字符读入,但如果要指定所读入的字符长度则需设置本属性(见图1)。
图1 参数设置界面

3.2数据接收

通过上述属性的设置,便可进行串口的通讯和数据的接收。MSComm控件的PortOpen属性用于设置通行端口的连接状态,将其设为TRUE以打开串行端口,接收数据流,运行完毕后将其关闭(在Visual Basic的设计中,端口会在程序结束时自动关闭)程序代码如下:
If MSComm

1.PortOpen = FALSE Then

MSComm

1.PortOpen = TURE

End If
则数据开始流入到接收缓冲区中,并引发OnComm()事件。不同的情况,引发的事件也不相同,当事件参数为ComEvReceive时,表明接收到Rthreshold字符,然后通过Input方法将缓冲区内的数据读出。在读出过程中,系统会自动将缓冲区内的数据删除。
Private Sub MSComm1_OnComm()
Dim S As String
Select Case MSComm

1.CommEvent

Case ComEvReceive ’接收到 Rthreshold字符
S = MSComm

1.Input’从缓冲区内读出InputLen设定字符数的数据

GetGPSChar S’获取完整的数据语句函数
End Select
End Sub
GetGPSChar(Data As String)函数用来获取完整的语句,通过检查接收数据的回车换行符来判断数据是否为同一语句的数据,由于数据是连续的。因此,回车换行可以作为本完整语句的起始和下一完整语句的开始标志。
虽然串行传输时有奇偶校验,但是奇偶校验只是针对一个字节而言,对于大数据量的传输时,有时为了保证语句的完整性和正确性,则必须通过最后的检验码进行校验,校验的算法是以数据头“$”和“*”之间的所有字节求异或值,将该值与*后处的值进行比较,如果相同,则说明语句完整,否则抛弃该语句,重新读取新的语句,直到获得新的完整语句为止。

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号