GPS通讯协议1

GPS(Global Positioning System),即全球定位系统,利用24颗GPS的测距和测时功能进行全球定位,在许多系统中,如现代船载(或车载)导航系统、机场导航系统、江河流域的灾害信息管理和预测系统中,GPS得到了广泛的应用。
GPS主要有3大组成部分,即空间星座部分、地面监控部分和用户设备部分。其中空间星座部分、地面监控部分均为美国所控制。GPS的用户设备主要有接收机硬件和处理软件组成。用户通过用户设备接收GPS卫星信号,经信号处理而获得用户位置、速度等信息,最终实现GPS进行导航和定位的目的。

要实现GPS和导航系统的连接,必须要解决计算机和GPS接收机的串口通信问题。在计算机和GPS接收机的数据传输过程中,计算机的串口(COM)作为计算机CPU和串行设备间的编码转换器,提供了计算机与GPS接收机之间的数据传输通道。而GPS接收机作为数据终端设备,将采集到的导航定位数据通过计算机串口传输给计算机,并为导航系统使用。在Windows环境下可以通过Visual Basic编程语言及其提供的专门用于串口通信的MSComm控件,实现GPS接收机与计算机的串口通信。

  • GPS NMEA-0183协议详解
    NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。
    NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
    不过,也有少数厂商的设备使用自行约定的协议比如GARMIN的GPS设备(部分GARMIN设备也可以输出兼容NMEA-0183协议的数据)。软件方面,我们熟知的Google Earth目前也不支持NMEA-0183协议,但Google Earth已经声明会尽快实现对NMEA-0183协议的兼容。呵呵,除非你确实强壮到可以和工业标准分庭抗礼,否则你就得服从工业标准。
    NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。 下面给出这些常用NMEA-0183语句的字段定义解释。

    $GPGGA

    例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F
    字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息
    字段1:UTC 时间,hhmmss.sss,时分秒格式 
    字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0) 
    字段3:纬度N(北纬)或S(南纬) 
    字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
    字段5:经度E(东经)或W(西经) 
    字段6:GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算 
    字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0) 
    字段8:HDOP水平精度因子(0.5 - 99.9) 
    字段9:海拔高度(-9999.9 - 99999.9) 
    字段10:地球椭球面相对大地水准面的高度 
    字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空) 
    字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空) 
    字段13:校验值

    $GPGSA

    例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A
    字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息
    字段1:定位模式,A=自动手动2D/3D,M=手动2D/3D
    字段2:定位类型,1=未定位,2=2D定位,3=3D定位
    字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)
    字段15:PDOP综合位置精度因子(0.5 - 99.9)
    字段16:HDOP水平精度因子(0.5 - 99.9)
    字段17:VDOP垂直精度因子(0.5 - 99.9)
    字段18:校验值

    $GPGSV

    例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70
    字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息
    字段1:本次GSV语句的总数目(1 - 3)
    字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)
    字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)
    字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
    字段5:卫星仰角(00 - 90)度(前导位数不足则补0)
    字段6:卫星方位角(00 - 359)度(前导位数不足则补0)
    字段7:信噪比(00-99)dbHz
    字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
    字段9:卫星仰角(00 - 90)度(前导位数不足则补0)
    字段10:卫星方位角(00 - 359)度(前导位数不足则补0)
    字段11:信噪比(00-99)dbHz
    字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
    字段13:卫星仰角(00 - 90)度(前导位数不足则补0)
    字段14:卫星方位角(00 - 359)度(前导位数不足则补0)
    字段15:信噪比(00-99)dbHz
    字段16:校验值

    $GPRMC

    例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
    字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
    字段1:UTC时间,hhmmss.sss格式
    字段2:状态,A=定位,V=未定位
    字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0) 
    字段4:纬度N(北纬)或S(南纬)
    字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
    字段6:经度E(东经)或W(西经)
    字段7:速度,节,Knots
    字段8:方位角,度
    字段9:UTC日期,DDMMYY格式
    字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
    字段11:磁偏角方向,E=东W=西
    字段16:校验值

    $GPVTG

    例:$GPVTG,89.68,T,,M,0.00,N,0.0,K*5F
    字段0:$GPVTG,语句ID,表明该语句为Track Made Good and Ground Speed(VTG)地面速度信息
    字段1:运动角度,000 - 359,(前导位数不足则补0)
    字段2:T=真北参照系
    字段3:运动角度,000 - 359,(前导位数不足则补0)
    字段4:M=磁北参照系
    字段5:水平运动速度(0.00)(前导位数不足则补0)
    字段6:N=节,Knots
    字段7:水平运动速度(0.00)(前导位数不足则补0)
    字段8:K=公里/时,km/h
    字段9:校验值 

    $GPGLL

    例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
    字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息
    字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0) 
    字段2:纬度N(北纬)或S(南纬)
    字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)
    字段4:经度E(东经)或W(西经)
    字段5:UTC时间,hhmmss.sss格式
    字段6:状态,A=定位,V=未定位
    字段7:校验值
  • sunnydl (2010-12-14 09:53:20)

    NMEA是National Marine Electronics Association(美国国家海事电子协会)的缩写。该协会是一家专门从事海洋电子设备方面研究的民间机构,它制定了关于GPS(全球定位系统)电子设备之间的通信接口和协议的NMEA标准。NMEA0183协议是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
      GPS接收机与计算机之间传输的数据为NMEA0183标准格式,采用串口通信协议为波特率4800bps,8个数据位,1个停止位,无奇偶校验。GPS信号输出时间间隔通常在0~2s范围内。实际导航应用读取GPS的空间定位数据时,若实时性要求不是很高,则每隔1s采样一次就已足够。
      我们不需要了解NMEA0183通讯协议的全部内容,下面仅从协议中挑选出程序需要的那部分定位信息,采集程序将忽略其余的信息。
      下图描述了NMEA0183协议GPRMC定位语句的结构

    $GPRMC    ,123456    ,A    ,3444.1234,N    ,13521.4567,E    ,005.6
    Field#    1    2         3    4         5    6    7
    ,123.5    ,020197    ,001.0,W    ,A    ..07    CR LF
    8    9    10    11    12    13    

    其各字段含义如下:
    ⊙ $GPRMC:其中$字符为所有GPS语句的起始标志,GPRMC为地址域值,代表GPS推荐的最短数据。
    ⊙ 编号为1至12的字段都是数据字段,每个字段的起始都为一个逗号,表示分割。
    ⊙ 编号为1的字段代表UTC_TIME24h(24小时)制的标准时间,格式为“,HHMMSS”,HH表示小时值,MM表示分钟值,SS表示秒值。
    ⊙ 编号为2的字段表示通讯状态,值为A或者V,A表示数据“OK”,V表示一个警告。
    ⊙ 编号为3、4的字段表示纬度值,精确到小数点前4位,后4位。格式为“,XXYY.YYYY,Z”,XX表示度(°),YY.YYYY表示分(′),Z区分南纬或北纬,“N”表示北纬,”S“表示南纬。
    ⊙ 编号为5、6的字段表示经度值,精确到小数点前5位,后4位。格式为“,XXXYY.YYYY,Z“,XXX表示度(°),YY.YYYY表示分(′),Z区分东经或西经,”W”表示西经,“E”表示东经。
    ⊙ 编号为7的字段表示速度值,精确到小数点前3位,后1位。格式为“,XXX.X”,XXX.X即为速度值,单位为海里/小时。
    ⊙ 编号为8的字段表示真实航向,格式为“,XXX.X”,XXX.X即为航向值,单位为度。
    ⊙ 编号为9的字段表示UTC_DATE标准日期,格式为“.DDMMYY”。YY表示年度,MM表示月份,SS表示天。年份应该在1997~2040之间。
    ⊙ 编号为10、11的字段表示磁偏移,格式为“,XXX.X,Y”,XXX.X即为磁偏移量,单位为度。Y区分偏移方向,“W”表示西,“E”表示东。
    ⊙ 编号为12的字段表示系统定位模式。
    ⊙ 编号为13的字段为校验和域,格式为“..XX”,XX表示校验和。
    ⊙ GPRMC定位语句的最末是回车换行符(CR LF,即0x0d0x0a),为语句结束标志。
    如果与卫星的通信正常的话,可以接收到数据格式如下所示:
    $GPRMC,204700,A,3403.8683,N,11709.4323,W,001.9,336.9,170698,013.6,E,A..07 CR LF
    如果当前没有和卫星取得联系,那么字符串的格式可能如下所示:
    $GPRMC,204149,V,,,,,,,170698,,A,,CR LF

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值