关键字:
GPS:Global Position System, 全球定位系统
NMEA:National Marine Electronics Association 全国海洋电子协会
SiFR:u-blox公司的GPS模块二进制数据协议
WGS 84:World Geodetic System 1984
LLA: Longitude/Latitude/Altitude经纬度和海拔
简述:
本文介绍采用GPS接受模块,GIS控件开发GPS/GIS应用软件的一些要点。不涉及复杂的地理信息理论,主要是针对协议和接口的应用开发
一:GPS 模块应用
GPS(全球定位系统)接受硬件上已经模块化,这里主要基于我使用过的u-blox TIM GPS(以下简称TimGPS)来介绍。
TimGPS模块如图(几乎是1:1比例):
此模块提供和GPS卫星通信的功能,对外提供FFC20接口,可以给它增加电源,接口板,串口模块,使之可以通过串口和计算机连接。
如何开发串口程序在本文中不再介绍,无论在windows/linux下开发串口串口程序都是很简单的事情。
TimGPS对外提供标准NMEA协议和厂家自己的SiRF二进制协议。
1.1 NMEA(National Marine Electronics Association) 0183协议
NMEA 0183是一种航海、海运方面有关于数字信号传递的标准,此标准定义了电子信号所需要的传输协议,传输数据时间。这个协议是文本格式的。大致如下
Start Sequence |
Payload |
Checksum |
End Sequence |
消息头
|
消息体,具体数据和NMEA消息字相关,数据之间用逗号(,)间隔。 2243.4976,N,11414.7289,E,091828.819,A
|
校验码,格式为*[16进制数]如*2C |
回车换行
|
协议头,格式为输出:$GPxxx,xxx为输出消息字如GLL.输入:$PSRF
1.1.1NMEA协议输出和输入消息
NMEA协议有以下输出消息
消息字 |
内容 |
GGA |
时间,位置,定位数据 |
GLL |
经纬度,UTC格式时间,位置和状态数据 |
GSA |
接收机模式和卫星工作数据,包括位置和水平/竖直稀释精度等。稀释精度(Dilution of Precision)是个地理定位术语.一个接收器可以在同一时间得到许多颗卫星定位信息,但在精密定位上,只要四颗卫星讯号即已足够了 |
GSV |
接收机能接收到的卫星信息,包括卫星ID,海拔,方位角,信噪比等 |
MSS |
信号比(SNR),信号强度,频率,比特率 |
RMC |
日期,时间,位置,方向,速度数据。是最常用的一个消息 |
VTG |
相对地面的方向和速度数据 |
ZDA |
时间和日期数据。 |
和地理信息密切的相关的消息如下,各消息之间包含的信息字段有出入也有重复,在一轮消息循环里,各消息相同的字段中包含相同的地理数据。可以综合多个消息,来获取完整的数据。
|
日期 |
时间 |
纬度 |
经度 |
海拔 |
定位状态 |
卫星数 |
地面速度 |
方向角 |
GGA |
|
√ |
√ |
√ |
√ |
√ |
√ |
|
|
GLL |
|
√ |
√ |
√ |
|
√ |
|
|
|
RMC |
√ |
√ |
√ |
√ |
|
√ |
|
√ |
√ |
VTG |
|
|
|
|
|
|
|
√ |
√ |
ZDA |
√ |
√ |
|
|
|
|
|
|
|
以下为u-lox厂商扩充的输出消息
PSRF150 |
OK-to-send指令,在节电模式中表示进入工作状态
|
PSRF161 |
硬件状态报告 |
工作在NMEA模式时,TimGPS可以有以下输入消息.输入消息一般是用于控制GPS的运行的。
消息字 |
内容 |
100 |
设置串口参数和协议 |
101 |
XYZ导航坐标初始化。输入参数按 WGS84坐标系确定 |
102 |
设置DGPS端口 |
103 |
设置或查询数据输出频率。可以设置每个NMEA消息的是否输出和输出频率 |
104 |
输入当前经纬度和海拔来初始化模块 |
105 |
开发调试数据开关 |
106 |
(u-blox)可以改变大地基准坐标系,默认是WGS-84坐标系 |
107 |
(u-blox)配置节电模式 |
108 |
(u-blox)进入下载模式,更新Flash |
MSK |
设置MSK信号接收机参数 |
每个协议的具体格式,可以到网上下载具体的NMEA协议。