GPS 入門 4 —— GPS NMEA-0183協定 [轉] (2008-10-11 18:42:39)
<script> var $tag='gps,nmea-0183協定,超級終端,雜談'; var $tag_code='62efebceadcf711ddd8373bba24d2d27'; </script> 标簽:gps nmea-0183協定 超級終端 雜談 | 分類:GPS.our.life |
GPS可以輸出實時定位資料讓其他的裝置使用,這就牽扯到了資料交換協定。幾乎現在所有的GPS接收機都遵循美國國家海洋電子協會(National Marine Electronics Association)所指定的标準規格,這一标準制訂所有航海電子儀器間的通訊标準,其中包含傳輸資料的格式以及傳輸資料的通訊協定。NMEA協定有0180、0182和0183三種,0183可以認為是前兩種的超集,現在正廣泛的使用,0183有幾個版本,V1.5 V2.1。是以,如果大家的GPS接收機如果要聯上筆記本裡通用的GPS導航程式,比如OZIEXPLORER和俺的GPSRECEIVER,就應該選擇NEMA V2.0以上的協定。NMEA規定的通訊速度是4800 b/S。現在有些接收機也可以提供更高的速度,但說實話,沒有什麼用,4800就足夠了。
象GARMIN,自己有一個mapsource軟體,為了不讓其他品牌的GPS使用該軟體,就設計了私有的GARMIN協定,隻有GARMIN的機器才能輸出這種資料,而MAPSOURCE隻能接收GARMIN協定,這樣一來MAPSOURCE就隻能讓GARMIN的機器使用.
SIFR 天寶、摩托羅拉也有自己的專用二進制協定,但都支援NMEA協定輸出的,通過專用的設定軟體可以更改輸出方式。
下面是NMEA協定常用的幾種輸出類型:
GPRMC(建議使用最小GPS資料格式)
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
1) 标準定位時間(UTC time)格式:時時分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位狀态,A = 資料可用,V = 資料不可用。
3) 緯度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 緯度區分,北半球(N)或南半球(S)。
5) 經度,格式:度度分分.分分分分。
6) 經度區分,東(E)半球或西(W)半球。
7) 相對位移速度, 0.0 至 1851.8 knots
8) 相對位移方向,000.0 至 359.9度。實際值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁極變量,000.0 至180.0。
11) 度數。
12) Checksum.(檢查位)
GPGSV(所示衛星格式)
$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,⋯<4>,<5>,<6>,<7>,<8><CR><LF>
1) 天空中收到訊号的衛星總數。
2) 定位的衛星總數。
3) 天空中的衛星總數,00 至 12。
4) 衛星編号, 01 至 32。
5) 衛星仰角, OO 至 90 度。
6) 衛星方位角, OOO 至 359 度。實際值。
7) 訊号噪聲比(C/No), 00 至 99 dB;無表未接收到訊号。
8) Checksum.(檢查位).
GPGSA(GPS精度指針及使用衛星格式)
$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>
1)模式 2:M = 手動, A = 自動。
2)模式 1:定位型式 1 = 未定位, 2 = 二維定位, 3 = 三維定位。
3) PRN 數字:01 至 32 表天空使用中的衛星編号,最多可接收12顆衛星資訊。
4) PDOP-位置精度稀釋 0.5 至 99.9.
5) HDOP-水準精度稀釋 0.5 to 99.9.
6) VDOP-垂直精度稀釋 0.5 to 99.9.
7) Checksum.(檢查位).
GPS固定資料輸出語句($GPGGA)
這是一幀GPS定位的主要資料,也是使用最廣的資料。為了便于了解,下面舉例說明$GPGGA語句各部分的含義。例1是用GN-77N和筆者開發的軟硬體接口,在筆者所在地接收到的$GPGGA語句的内容。
例1:$GPGGA,050901,3931.4449,N,11643.5123,E,1,07,1.4,76.2,M,-7.0,M,,*65
其标準格式為:$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
各部分所對應的含義為:
(1)定位UTC時間:05時09分01秒
(2)緯度(格式ddmm.mmmm:即dd度,mm.mmmm分);
(3)N/S(北緯或南緯):北緯39度31.4449分;
(4)經度(格式dddmm.mmmm:即ddd度,mm.mmmm分);
(5)E/W(東經或西經):東經116度43.5123分;
(6)品質因子(0=沒有定位,1=實時GPS,2=差分GPS):1=實時GPS;
(7)可使用的衛星數(0~8):可使用的衛星數=07;
(8)水準精度因子(1.0~99.9);水準精度因子=1.4;
(9)天線高程(海平面,-9999.9~99999.9,機關:m);天線高程=76.2m);
(10)大地橢球面相對海平面的高度(-999.9~9999.9,機關:m):-7.0m;
(11)差分GPS資料年齡,實時GPS時無:無;
(12)差分基準站号(0000~1023),實時GPS時無:無;
*總和校驗域;
hh 總和校驗數:65
(CR)(LF)回車,換行。
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:校驗值
$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:校驗值
收到的資訊就是這樣的:
$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062320,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7D
$GPGLL,3537.8333,N,13944.6667,E,062320,V*3B
$GPRMC,062320,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0D
$GPZDA,062320,03,02,2022,,*4E
$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062321,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7C
$GPGLL,3537.8333,N,13944.6667,E,062321,V*3A
$GPRMC,062321,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0C
$GPZDA,062321,03,02,2022,,*4F
$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09
$GPVTG,000.0,T,,M,000.0,N,000.0,K*60
$GPGGA,062322,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7F
$GPGLL,3537.8333,N,13944.6667,E,062322,V*39
$GPRMC,062322,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0F
$GPZDA,062322,03,02,2022,,*4C
第<3>,<4>,<5>,<6>項個别衛星會重複出現,每行最多有四顆衛星。其餘衛星資訊會于次一行出現,若未使用,這些字段會空白。
這下,超級終端中顯示的資料就能看懂了吧,其實所有的軟體也都是對這些标準的輸出資料進行處理和運算!