蓝牙GPS实验定位系统的VB编程
VB编程相关日志(1 2009-11-25 01:35:09 阅读220 评论0 字号:大中小 订阅
一、蓝牙GPS定位系统的基本概念
所谓的GPS全称是Global Position System,中文是全球定位系统。GPS是美国国防部陆海空三军联合研制的第二代卫星导航定位系统,自1973年到1993年,GPS全球定位系统的建立经历了近20年,耗资过百亿美元;整个定位系统主要是通过围绕在地球表面的24颗人造卫星来实现全天候、全球性和高精度的连续定位的,这24颗卫星分六条轨道围绕在地球表面,每条轨道上有四颗卫星。
通过GPS的定位功能就能知道您当前处于地球上的具体位置,该具体位置是用一组经纬度和海拔高度数据信息来表现出来的。
GPS基本原理是定位卫星由地面站不断进行跟踪、调控和定位,并与地面站进行数据交换,从而确定卫星的空间位置,组织成空间定位数据发送给GPS接收机。GPS接收机分别从三颗以上的导航卫星上接收定位信号,经过计算机计算后得到地面定位数据,理论上三颗卫星可以测定
经纬度数据,四颗卫星就可以得到高精度数据,连续测定还可以计算出速度、方向等数据。
导航和定位是两个概念。定位是确定位置信息,而导航是在定位的基础上进一步结合电子地图技术,提供给用户附近地理信息,供用户在运动过程中确定运行方向。智能导航系统可以通过在电子地图上预设目标,由系统自动规划最优运动路线,并通过导航指令指导用户或自动控制运动物体到达目的地。
Bluetooth(蓝牙)概念最早由爱立信公司在1995年提出,逐渐被人们接受并广为设计用于各类民用电子设备、IT外设的数据通讯中。
蓝牙规范采用2.4GHz的微波工作频段,以1Mbps的速度在10米甚至100米距离内高速传输。基于蓝牙规范的蓝牙技术通过缩短通信的持续时间来增强信号传输的稳定性和可靠性。同时,蓝牙技术还采用多种技术减少信号出错并对信号进行错误校正,以进一步增强信号传输抗干扰能力和稳定性。蓝牙技术可以同时支持电话和数据的传输,这是现有的许多无线技术所难以匹敌的。通过低成本的开放的无线接口连接成网络,是蓝牙的另一大特点。更重要的是,蓝牙技术是全球开放的,亦即蓝牙技术在全球范围内具有很好的兼容性。
PC机上蓝牙可以实现多种服务模式,如局域网服务、拨号网络服务、串行端口服务、文件传输服务、AV传输服务等。其中局域网服务可以使几台PC通过蓝牙连成对等网互相访问,AV传输服务可以将蓝牙视频终端(如带蓝牙的电视机)播放来自蓝牙PC的影视片,而蓝牙GPS接收机,则将通过串行端口服务,将接受卫星定位数据后运算输出的通过蓝牙高频信号传输至PC的蓝牙适配器,再通过程序访问和接收处理蓝牙适配器的虚拟串口,实现蓝牙GPSPC之间的数据连接。通常蓝牙GPS接收机自带电池,所以就免去了蓝牙接收机与PC之间数据线的牵绊,特别适合于车载设计而被广泛采用。更方便的设计则将PC用掌上电脑、智能手机替代,从而诞生掌上便携式定位系统。
为降低开销,本文推荐采用目前市场上廉价的入门级蓝牙GPS接收机NAVMAN4410一台,V1.2USB蓝牙适配器1个, PC机一台(建议采用笔记本)。如果有钱,那就买一个带锂电的微型蓝牙GPS接收机,如HI-406。这款接收机使用的是NOKIA手机电板,体积几乎是NAVMAN4410的一半。
1NAVMAN4410蓝牙GPS接收机
这是一款产自新西兰的蓝牙GPS接收机,内置GPS天线和37号电池,带车充电源线,可以
在电池模式下连续使用30个小时,开机约3分钟即可进行定位,12通道最多可以同时追踪12GPS卫星,定位经度小于5米,灵敏度较高,实际测试在窗台上即可搜索到48颗卫星,适于在汽车上使用,价格也不算贵。
2.蓝牙适配器

如果PC上没有内置的蓝牙装置,就需要购置一个蓝牙适配器。其外型和U盘相似。
蓝牙适配器就跟显卡网卡相似,提供了数据信号进出PC的通道,所以被称为适配器,只不过经过它的数据被调制成超高频无线蓝牙信号了。根据其对应蓝牙数据格式编码标准的差异,蓝牙适配器也有版本差异,一般说来高版本的总是兼容低版本的,所以为避免麻烦,尽可能选高版本的。NAVMAN4410采用蓝牙1.2版本,蓝牙适配器也不应该低于它。
常见的蓝牙适配器采用USB接口与PC相连,少数种类为了加大通讯距离,身上还带有外置天线,读者可以根据需要选用。
本文中需要安装的驱动主要是蓝牙适配器的驱动,由蓝牙适配器所附光盘提供,因篇幅问题,本文略过。安装成功插上适配器后在任务栏托盘区出现。
这个在适配器未插上或未激活时是灰的,插上适配器或激活时是蓝的,当与其他蓝牙设备建立联系后,就变成绿的了。
双击蓝牙图标,激活蓝牙配置主窗口。
按住蓝牙GPS接收机的电源开关超过1秒钟,NAVMAN4410上软质的电源开关亮起蓝的双闪信号灯(开关与信号灯一体设计),说明接收机启动但没有连接。
点击【我的蓝牙】|【搜索蓝牙设备】菜单项,当搜到GPS接收机后,主窗口工作界面中显示蓝牙设备的名称NAVMAN GPS ONE”。
在该设备上右键单击【连接】|【蓝牙串口端口服务】。连接成功后,蓝牙适配器主窗口状态栏出现已连接提示,蓝牙适配器图标变成绿,GPS接收机的蓝指示灯呈慢速的单闪状态。至此,硬件准备工作告一段落。
在蓝牙设备符号上右键单击【状态】,出现状态对话框。在这个对话框中到端口提示,如COM6COM7等,这是蓝牙GPS接收机在PC上占用的串行端口号,这个数据将在后面的编程中用到。


为减少程序调试中的问题,以下代码将统一在WINDOWS XP Pro操作系统、VB6.0+SP6企业版环境下调试、编译运行,无其他特殊要求。
本讲将通过一组实验说明蓝牙GPS实验系统的编程原理,并详细介绍简易导航系统的设计制作。
二、PC与蓝牙GPS接收机建立通讯
这个实验的主要目的是掌握PC与蓝牙GPS接收机的通讯建立方法。前面说过NAVMAN4410在与PC联机后产生了一个串行通讯端口COM6(或其他),而VB中自带有一个MSCOMM控件,可以很方便地与串行口进行数据通讯,接下来就将学习这个控件的运用。
蓝牙GPS接收机在工作时定时(通常是11次)输出卫星NMEA协议信息。这是一种格式化的文本数据,包含有定位信息,该数据通过蓝牙信号无线传输至PCUSB接口上的蓝牙适配器接收,通过虚拟COM口传入PC机,实验一的任务就是用VB编程连接蓝牙GPS接收机,定时获取卫星NMEA协议信息。
运行VB,新建标准EXE”工程,单击菜单项【工程】|【部件】,在【控件】选项卡列表中,选中Microsoft Comm Control 6.0”控件,单击【确定】。
此时左侧工具栏出现电话机模样的MSCOMM控件按钮。双击该按钮,在主窗口上一控件图标Mscomm1。请注意这类控件在运行时是不显示的,所以其位置无关紧要。选中该控件,在属性对话框中设置Settings”属性为4800,n,8,1”。该属性的意思是传输速率4800bps、无同步位检查、每个数据单元8个位,而停止位1位。这是跟GPS接收机的数据格式对应的,当接收机数据格式改变时,应做对应修改。

在工具栏双击Timer控件按钮,在主窗口上添加一个定时器控件Timer1。由于NAVMAN4410蓝牙GPS接收机的数据更新率约每秒一次,所以设置Timer1控件的Interval值为2000,即每2秒钟执行一次接收任务。
在主窗口上添加一个用于显示接收卫星NMEA协议信息的文本框控件Text1,为完整显示接收数据,将其MultiLine属性修改为True,即多行显示ScrollBars属性为2”,即具有垂直滚动条。设计好的界面。
在窗体Load事件过程中添加如下代码,实现指定串口的初始化,以连接串口设备:
Private Sub Form_Load()

On Error Resume Next '如发生错误则跳到下一行执行
当蓝牙设备的虚拟COM口号为6
MSComm1.CommPort = 6

MSComm1.Settings = "4800,N,8,1"

由于在属性窗口已设置,上面这句可省略

MSComm1.InputLen = 0

MSComm1.PortOpen = True
End Sub
上述代码中设置 InputLen属性为 0 时,表示将使 MSComm 控件读取接收缓冲区中全部数据。
双击Timer1控件,在Timer1Timer事件过程中添加如下代码,以接收来自指定COM口的数据:
Private Sub Timer1_Timer()

On Error Resume Next

Text1.Text = MSComm1.Input
End Sub
运行后,出现界面及文本框中的数据,说明该试验成功了。
文本框中显示的就是GPS卫星NMEA协议信息,其中包含了卫星接收状态、定位经纬度、高度、方向、速度、时间等信息。接下去的任务就是要分析这些数据,用于具体的定位。
三、相关知识
GPS接收机可以同时输出多种协议的数据以适用于各类应用,其中NMEA0183是目前GPS厂商使用较多的协议,输出数据语句相当丰富,适用于不同的应用场合。作为车载GPS定位应用,主要用到经纬度和车辆运行速度、标准时间、运行方向等数据,为此,我们采用了其中的RMCRecommended Minimum Specific GPS/TRANSIT Data)推荐定位信息。
现在可以判读一下的RMC段信息的意义。其中第三行以$GPRMC”字段开始的句子就是RMC段信息,这段句子是:
$GPRMC,000231.990,V,36000.0000,N,72000.0000,E,0.000000,,101102,,*39
主要的数据解释如下:
000231.990”表示000231.990秒,注意这是UTC时间(协调世界时,用于替代过去常用的格林威治时间的世界标准时间),转为东八区时间必须在小时上加上8,再对24取余。
V汽车gps定位”表示表示此时卫星接收状况困难,不足以定位。作者此时是在室内测试的,当然接收不了卫星信号咯,呵呵。
36000.0000”表示纬度值。
N”表示北纬。
72000.0000”表示经度值。
E”表示东经。
0.000000表示地面速度为零。
注意,单位是海里/小时,换算成千米/小时还得乘以系数1.852
地面航向空白,同上道理。
101102”本来应该是卫星上的日期021110,跟上面的经纬度、时间一样,因为在室内未接收到卫星数据,所以显示的都是GPS接收机内部的初始数据,此数据不一定准确。