GPS NMEA-0183协议常用数据格式及解析攻略
GPS協議標準目前常用到的是NMEA-0183,很顯然,這是由NMEA發布的一個標準。
NMEA是National Marine Electronics Association ,即美國國家海洋電子協會的縮寫,NMEA是GPS的管理者,為方便GPS的推廣應用,發布了一系列GPS協議的標準格式。
NMEA-0183就是GPS協議標準的一個,它的早期版本為NMEA-0180和NMEA-0182。雖然它現在仍然用得很多,但時光的車輪在前進,它將會逐漸被最新的NMEA 2000所替代。
NMEA-183是一個基于ASCII的串行通信協議,它由一個個的語句組成,理解起來很簡單。
下面對它的一些常用的語句進行舉例說明,這些,是協議分析中會碰到的。
這些常用的NMEA-0183語句如下:
注:發送次序
$ PZDA、$ GPGGA、$ GPGLL、$ GPVTG、
$ GPGSA、$ GPGSV3、$ GPRMC
協議幀總說明:???
該協議采用ASCII碼,其串行通信默認參數為:波特率=4800bps,數據位=8bit,開始位=1bit,停止位=1bit,無奇偶校驗。???
幀格式形如:$aaccc,ddd,ddd,…,dddhh
1、“ $ ”——幀命令起始位???
2、aaccc——地址域,前兩位為識別符,后三位為語句名???
3、ddd…ddd——數據??
4、“ * ”——校驗和前綴???
5、hh——校驗和(check?sum),$與*之間所有字符ASCII碼的校驗和(各字節做異或運算,得到校驗和后,再轉換16進制格式的ASCII字符。)???
6、——CR(Carriage?Return)?+?LF(Line?Feed)幀結束,回車和換行
1.$GPGGA???
GPS固定數據輸出語句,這是一幀GPS定位的主要數據,也是使用最廣的數據。
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15>
<1>?UTC時間,格式為hhmmss.sss。??
<2>?緯度,格式為ddmm.mmmm(前導位數不足則補0)。???
<3>?緯度半球,N或S(北緯或南緯)。???
<4>?經度,格式為dddmm.mmmm(前導位數不足則補0)。?
<5>?經度半球,E或W(東經或西經)。???
<6>?定位質量指示,0=定位無效,1=定位有效。???
<7>?使用衛星數量,從00到12(前導位數不足則補0)。???<8>?水平精確度,0.5到99.9。???
<9>?天線離海平面的高度,-9999.9到9999.9米???
<10>?高度單位,M表示單位米。???
<11>?大地橢球面相對海平面的高度(-999.9到999.9)。???<12>?高度單位,M表示單位米。???
<13>?差分GPS數據期限(RTCM?SC-104),最后設立RTCM傳送的秒數量。???
<14>?差分參考基站標號,從0000到1023(前導位數不足則補0)。???
<15>?校驗和。
2 $GPGSA???
GPS?DOP?and?Active?Satellites(GSA)當前衛星信息
$GPGSA,<1>,<2>,<3>,<3>,<3>,<3>,<3>,<4>,<5>,<6>,<7>
<1>模式?:M?=?手動,?A?=?自動。?
<2>定位型式?1?=?未定位,?2?=?二維定位,?3?=?三維定位。?
<3>PRN?數字:01?至?32?表天空使用中的衛星編號,最多可接收12顆衛星信息。???
<4>?PDOP位置精度因子(0.5~99.9)???
<5>?HDOP水平精度因子(0.5~99.9)???
<6>?VDOP垂直精度因子(0.5~99.9)???
<7>?Checksum.(檢查位).
3 GPGSV??可視衛星狀態輸出語句??GPGSV**? 可視衛星狀態輸出語句 ??? **GPGSV???可視衛星狀態輸出語句?????GPGSV,?<1>,<2>,<3>,<4>,<5>,<6>,<7>,…,<4>,<5>,<6>,<7>*<8>
<1>?總的GSV語句電文數。???
<2>?當前GSV語句號。???
<3>?可視衛星總數,00至12。???
<4>?衛星編號,01至32。???
<5>?衛星仰角,00至90度。???
<6>?衛星方位角,000至359度。實際值。???
<7>?信噪比(C/No),00至99dB;無表未接收到訊號。???<8>?校驗和。
注:每條語句最多包括四顆衛星的信息,每顆衛星的信息有四個數據項,即:衛星編號、衛星仰角、衛星方位角、信噪比。
???
4 $GPRMC???
推薦最小數據量的GPS信息(Recommended?Minimum?Specific?GPS/TRANSIT?Data)
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13>
<1>?UTC(Coordinated?Universal?Time)時間,hhmmss(時分秒)格式???
<2>?定位狀態,A=有效定位,V=無效定位???
<3>?Latitude,緯度ddmm.mmmm(度分)格式(前導位數不足則補0)???
<4>?緯度半球N(北半球)或S(南半球)???
<5>?Longitude,經度dddmm.mmmm(度分)格式(前導位數不足則補0)???
<6>?經度半球E(東經)或W(西經)???
<7>?地面速率(000.0~999.9節,Knot,前導位數不足則補0)???
<8>?地面航向(000.0~359.9度,以真北為參考基準,前導位數不足則補0)???
<9>?UTC日期,ddmmyy(日月年)格式???
<10>?Magnetic?Variation,磁偏角(000.0~180.0度,前導位數不足則補0)???
<11>?Declination,磁偏角方向,E(東)或W(西)???
<12>?Mode?Indicator,模式指示(僅NMEA0183?3.00版本輸出,A=自主定位,D=差分,E=估算,N=數據無效)???
<13>?校驗和。
5. $GPVTG 地面速度信息
GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>?<10>例:GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*<10>?? ?例:GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>?<10>???例: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:校驗值
6. $ GPGLL?大地坐標信息
地理定位信息$ GPGLL的標準格式如下:
*$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>hh
例:$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:校驗值
7 $ GPZDA 當前時間信息
*$GPZDA,<1>,<2>,<3>,<4>,<5>,<6>hh
例如: $GPZDA,105001,25,02,2008,-08,00*67
字段1: UTC時間 ,hhmmss(時分秒)
字段2: 日
字段3:月
字段4:年
字段5:本地區域小時(NEO-6M未用到,為00-正負13)
字段6:本地區域分鐘(NEO-6M未用到,為00-59)
字段7: 校驗和
每一幀最后都有一個hh的校驗和,該校驗和是通過計算 $與 * 之間所有字符ASCII碼的異或運算得到, 將得到的結果以ASCII字符表示就是該校驗了。
附帶解析鏈接
NMEA數據解析方法
總結
以上是生活随笔為你收集整理的GPS NMEA-0183协议常用数据格式及解析攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习入门初步——MNIST数据格式如
- 下一篇: python自定义函数添加到路径