不同GPS-OEM芯片跨平台混合使用方案

2013-12-06 08:46刘庆元
测绘工程 2013年6期
关键词:伪距服务器端数据包

刘庆元,邹 磊

(中南大学 地球科学与信息物理学院,湖南 长沙 410083)

GPS-OEM板因其体积小、功耗低、性能优良而且价格低廉的优势而被广泛使用。然而,由于各种GPS-OEM板的生产厂商不同,其输出的数据包格式也不尽相同,使得不同芯片或者接口的GPSOEM板无法组合使用。虽然美国国家海洋电子协会制定了通用的NMEA-0183协议,但是由于该格式的局限性,无法胜任测量工作[1]。不同GPSOEM芯片有不同的通讯接口,使得芯片的跨平台混合使用变得很困难,而且数据处理程序专一性很强,一旦芯片数据输出格式或者接口发生变化,数据处理程序便无法再使用。

1 解决方案概述

为解决上述矛盾,本文设计编写了服务程序,运行于用户的软件和GPS芯片硬件之间,来统一数据包格式和数据的通讯方式,使得需要GPS观测原始数据的测量型用户能获取到统一的、与芯片无关的、可靠的数据,同时,不需要GPS原始数据的用户还能像以前一样,不受任何影响的使用。

数据处理程序工作模式如图1所示,服务器端处理程序可以运行于任何系统中(可以是计算机,也可以是PDA甚至是单片机),设计有多种数据接收模块,可以接收各种数据,并且按照扩展的NMEA-0183协议转发到固定端口的UDP连接上。用户端程序同样可以运行于各种平台,只要能连接Internet(没有Internet连接时,可以连接本机),便可以接收到GPS观测数据[2],无需关心数据来自哪一种GPS-OEM芯片,这样就可以实现不同芯片的跨平台使用。

图1 GPS数据处理服务工作模式

2 原始NMEA-0183协议及其局限性

NMEA-0183协议是美国国家海洋电子协会(National Marine Electronics Association)为统一海洋导航规范而制定的标准,是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议[3-4]。

NMEA-0183格式数据串的所有数据都采用ASCII文本字符表示,数据传输以“$”开头,语句头由5个字母组成,前两个一般为“GP”,表示该语句是属于何种系统,后3个字母表示“语句ID”,表示该语句是关于何方面的数据。语句头后是数据体,包含不同的数据体字段,语句末尾为校验码(可选),以回车换行符<CR><LF>结束。每行语句最多包含82个字符。数据字段以逗号分隔识别,空字段保留逗号。常用语句及其含义如表1所列。

表1 NMEA-0183协议的语句及含义

然而,NMEA-0183协议常用的定位信息仅能输出定位的最终结果信息,却无法输出GPS的观测数据信息,而对测量来说这恰恰是最重要的数据。

目前一些厂商生产的GPS-OEM芯片可以输出GPS观测数据,比如卫星星历、伪距等数据,但是数据包一般遵守厂商自定义的数据格式,因此,不同芯片的GPS-OEM板便不能通用。当前的GPSOEM测量数据处理程序,由于数据包格式不同,仅能针对特定型号的GPS-OEM板,无法实现不同芯片的混合使用。

综上,不同GPS-OEM厂商定义了不同的数据包,共同遵循的NMEA-0183协议又无法输出GPS测量的全部数据,因此,有必要提出一个相互协调的方案。

3 NMEA-0183协议语句扩展

要扩展NMEA-0183协议满足测量需要,则必须可以输出伪距观测值(目前大多数GPS-OEM板可以输出伪距信息)和卫星星历[5]。本文在保留了原有NMEA-0183协议语句的基础上,按照该协议对语句的要求,增加伪距输出GPPSD语句和卫星星历输出GPEPHF、GPEPHS和GPEPHT语句(星历数据较多,固分3条语句)。一条GPPSD语句可以输出多个伪距信息,但顾忌到数据包长度限制,最多允许3个观测值。卫星星历数据量较大,需要分3个数据包发送,具体格式说明如下:

3.1 GPS伪距语句

格式:$GPPSD,<1>,<2>,<3>,<4>,<2>,<3>,<4>*hh<CR><LF>

举 例:$GPPSD,2,15,528348,24158712.5312,22,528348,20437393.1094*A3

<1>、本条语句包含的伪距个数

<2>、GPS卫星SV编号

<3>、伪距测量时间

<4>、卫星到接收机的伪距

3.2 GPS卫星星历语句1

$GPEPHF,<1>,<2>,<3>,<4>,<5>,<6>*hh<CR><LF>

举 例:$GPEPHF,02,5.1840E+05,5.153691E+03,8.247306E-03,3.041002E-01,-6.05476E-01*7B

<1>、GPS卫星SV编号;

<2>、参考时间toe;

<4>、轨道偏心率e;

<5>、参考时刻的轨道倾角i0;

<6>、参考时刻平近点角M0。

3.3 GPS星历语句2

$GPEPHS,<1>,<2>,<3>,<4>,<5>,<6>*hh<CR><LF>

举 例:$GPEPHS,02,9.525346E-01,-8.267319E-01,1.439048E-09,-2.56977E-09,2.53049E-06*5C

<1>、GPS卫星SV编号;

<2>、近地点角距ω;

<3>、参考时刻的升交点赤经Ω0;

<4>、卫星平均角速度的改正数Δn;

<5>、升交点赤经变化率Ω-dot;

<6>、升交点正弦调和改正数Cus。

3.4 GPS星历语句3

$GPEPHF,<1>,<2>,<3>,<4>,<5>,<6>*hh<CR><LF>

举例:$GPEPHF,02,-9.16621E-07,-6.22543E-08,-1.89728E-08,-5.65938E+01,2.21313E+02*2F

<1>、GPS卫星SV编号;

<2>、升交点余弦调和改正数Cuc;

<3>、轨道倾角正弦调和改正数Cis;

<4>、轨道倾角余弦调和改正数Cic;

<5>、轨道半径正弦调和改正数Crs;

<6>、轨道半径余弦调和改正数Crc。

4 数据包格式转换及转发

不同GPS-OEM板发送的数据包所遵守的协议不同,必须要将其转换为扩展的NMEA-0183协议,统一不同GPS-OEM板是数据输出接口。用户程序仅需要按照扩展的NMEA-0183格式来解析数据包,就可以获取需要的数据,而无需知道GPS-OEM板原始的数据格式。

服务端程序通过通用的TCP/IP协议中用户数据包协议(UDP)来转发数据包。UDP是一个简单的面向数据包的传输层协议,为网络层以上和应用层以下提供了一个简单的接口。因TCP/IP协议的通用性,用户程序可以不受系统限制地从Internet上获取数据。在没有Internet连接的情况下,还可以连接本机,为本机的不同程序提供数据[2]。

考虑到跨平台特性,服务端程序采用了优秀的跨平台应用程序库Qt(关于Qt请参考相关文档)。Qt封装了对设备接口的输入输出类QIODevice类,利用该类打开串口等计算机外围接口。QIODevice类从外围接口中按字节读取数据,存放于QByteArray字节数组中,并转换为QString字符串对象,通过字符串处理函数,最终把读入的数据转换为扩展的NMEA-0183协议格式[6]。最后,通过Qt封装的QUdpSocket类,将转换好的数据包通过Socket连接发送到UDP端口。

5 实 验

为实现在各种系统平台上都能正常工作,本文选用跨平台的QT库编写数据包转换转发服务器程序。服务器端在Windows Xp下运行如图2所示。

图2 服务器端程序在Windows下运行

服务器端运行后,绑定本机IP地址127.0.0.1上的9228端口,同时从串口COM5中读取Trimble公司的Lassen IQ芯片发送的数据。Lassen IQ发送TSIP协议的数据包(关于TSIP协议的具体定义,请参考Trimble公司的说明),该数据包为二进制格式,服务器端程序提取TSIP数据包中的相关信息,生成扩展的NMEA-0183协议格式,发送到127.0.0.1(本机)的9228端口。

在命令行下编写程序模拟用户获取数据,连接本机的9228端口,读取服务器端发送来的数据,结果如图3所示,正确地读取了数据包。

图3 用户连接UDP端口获取的数据

同时,程序还在Linux(内核版本3.0)上进行了实验,服务器端同样将Lassen IQ数据包成功转换为扩展的NMEA-0183数据包。

6 结束语

本文提出了利用扩展NMEA-0183协议语句的办法,即满足了与其他软件的兼容性,又满足了测量型GPS数据的发送;通过数据包转发到UDP端口的办法,使得用户完全不必关心是何种设备、通过何种方式发送的何种数据包,只要能连接Internet就可以获取所需要的数据包。

本文通过实验,将Trimble公司的TSIP协议数据包成功地转换为扩展的NMEA-0183协议数据包,并通过UDP端口发送给用户,证明了方案的可行性。

[1]李征航,黄劲松.GPS测量原理及应用[M].武汉:武汉大学出版社,2005.

[2]谢希仁,计算机网络[M].5版.北京:电子工业出版社,2008.

[3]王若璞,张超.Windows CE下手持电脑对GPS OEM板设置与 通讯[J].测绘科学技术学报,2007,24(S0):22-24.

[4]袁德宝,崔希民,臧永强,等,基于VC++的GPS-OEM板串行通信关键算法的设计与实现[J].测绘科学,2008,33(6):170-172.

[5]刘庆元,余文坤,杨哲,等.GPS-OEM板原始数据向RINEX格式转换程序设计[J].矿山测量,2009(5):31-33.

[6]成洁,卢紫毅.Linux窗口程序设计—Qt4精彩实例分析[M].北京:清华大学出版社,2008.

猜你喜欢
伪距服务器端数据包
基于Jpcap的网络数据包的监听与分析
Linux环境下基于Socket的数据传输软件设计
SmartSniff
浅析异步通信层的架构在ASP.NET 程序中的应用
北斗伪距观测值精度分析
基于Qt的安全即时通讯软件服务器端设计
GNSS伪距粗差的开窗探测及修复
联合码伪距和载波宽巷组合的相对定位技术研究
导航信号伪距测量抗干扰分析方法研究
网页防篡改中分布式文件同步复制系统