GPS資料包解析
GPS 上電後,每隔一定的時間就會返回一定格式的資料,資料格式為:
$資訊類型,x,x,x,x,x,x,x,x,x,x,x,x,x每行開頭的字元都是‘$’,接著是資訊類型,後面是資料,以逗號分隔開。
一行完整的資料如下:
$GPRMC,080655.00,A,4546.40891,N,12639.65641,E,1.045,328.42,170809,,,A*60
資訊類型為:
GPGSV:可見衛星資訊
GPGLL:地理定位資訊
GPRMC:推薦最小定位資訊
GPVTG:地面速度資訊
GPGGA:GPS定位資訊
GPGSA:當前衛星資訊
GPRMC 最小定位資訊
資料詳解:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC 時間,hhmmss(時分秒)格式
<2> 定位狀態,A=有效定位,V=無效定位
<3>緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)
<4> 緯度半球N(北半球)或S(南半球)
<5>經度dddmm.mmmm(度分)格式(前面的0也將被傳輸)
<6> 經度半球E(東經)或W(西經)
<7>地面速率(000.0~999.9節,前面的0也將被傳輸)
<8>地面航向(000.0~359.9度,以真北為參考基準,前面的0也將被傳輸)
<9> UTC 日期,ddmmyy(日月年)格式
<10>磁偏角(000.0~180.0度,前面的0也將被傳輸)
<11> 磁偏角方向,E(東)或W(西)
<12>模式指示(僅NMEA01833.00版本輸出,A=自主定位,D=差分,E=估算,N=資料無效)
解析內容:
1.時間,這個是格林威治時間,是世界時間(UTC),我們需要把它轉換成北京時間(BTC),BTC和UTC差了8個小時,要在這個時間基礎上加8個小時。
2. 定位狀態,在接收到有效資料前,這個位是‘V’,後面的資料都為空白,接到有效資料後,這個位是‘A’,後面才開始有資料。
3. 緯度,我們需要把它轉換成度分秒的格式,計算方法:如接收到的緯度是:4546.40891
4546.40891/100=45.4640891可以直接讀出45度, 4546.40891–45*100=46.40891, 可以直接讀出46分
46.40891–46 =0.40891*60=24.5346讀出24秒, 所以緯度是:45度46分24秒。
4. 南北緯,這個位有兩種值‘N’(北緯)和‘S’(南緯)
5. 經度的計算方法和緯度的計算方法一樣
6. 東西經,這個位有兩種值‘E’(東經)和‘W’(西經)
7.速率,這個速率值是海裡/時,單位是節,要把它轉換成千米/時,根據:1海裡=1.85公裡,把得到的速率乘以1.85。
8. 航向,指的是偏離正北的角度
9. 日期,這個日期是準確的,不需要轉換
GPGGA GPS定位元據
資料詳解:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
$GPGGA:起始引導符及語句格式說明(本句為GPS定位元據);
<1> UTC 時間,格式為hhmmss.sss;
<2> 緯度,格式為ddmm.mmmm(第一位是零也將傳送);
<3> 緯度半球,N 或S(北緯或南緯)
<4> 經度,格式為dddmm.mmmm(第一位零也將傳送);
<5> 經度半球,E 或W(東經或西經)
<6> 定位品質指示,0=定位無效,1=定位有效;
<7>使用衛星數量,從00到12(第一個零也將傳送)
<8>水平精確度,0.5到99.9
<9>天線離海平面的高度,-9999.9到9999.9米M指單位米
<10>大地水準面高度,-9999.9到9999.9米M指單位米
<11>差分GPS資料期限(RTCMSC-104),最後設立RTCM傳送的秒數量
<12>差分參考基站標號,從0000到1023(首位0也將傳送)。
解析內容:第9,10 個欄位,海平面高度和大地水準面高度,單位是米
GPVTG 地面速度資訊
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
<1> 以正北為參考基準的地面航向(000~359度,前面的0也將被傳輸)
<2> 以磁北為參考基準的地面航向(000~359度,前面的0也將被傳輸)
<3> 地面速率(000.0~999.9節,前面的0也將被傳輸)
<4> 地面速率(0000.0~1851.8公裡/小時,前面的0也將被傳輸)
<5> 模式指示(僅NMEA0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=資料無效
GPGSV 可視衛星狀態
例:$GPGSV,2,1,08,06,33,240,45,10,36,074,47,16,21,078,44,17,36,313,42*78
標準格式: $GPGSV,(1),(2),(3),(4),(5),(6),(7),…(4),(5),(6),(7)*hh(CR)(LF)
各部分含義為:
(1)總的GSV語句電文數;2;
(2)當前GSV語句號:1;
(3)可視衛星總數:08;
(4)PRN碼(偽隨機雜訊碼) 也可以認為是衛星編號
(5)仰角(00~90度):33度;
(6)方位角(000~359度):240度;
(7)信噪比(00~99dB):45dB(後面依次為第10,16,17號衛星的資訊); *總和校正域; hh 總和校正數:78; (CR)(LF)斷行符號,換行。
註:每條語句最多包括四顆衛星的資訊,每顆衛星的資訊有四個資料項目,即:
(4)-衛星號,(5)-仰角,(6)-方位角,(7)-信噪比。
例:
$GPGSV,3,1,10,24,82,023,40,05,62,285,32,01,62,123,00,17,59,229,28*70
每條語句包含四部分內容,例如:第一部分是“24,82,023,40”,第二部分是“05,62,285,32”等等。
每部分的第一個詞為PRC,第二個詞為衛星高程,跟著為方位角和訊號強度。
這個語句裡最重要的指標應該算是“訊號躁聲比(signal-to-noise ratio)”(以下簡稱為SNR)。
這個數值標示衛星訊號的接收率。我們知道,衛星是以相同的強度發射訊號,但是傳播過程中難免會遇到諸如樹和牆之類的 障礙物,這樣就影響了訊號的識別。
典型的SNR值在0到50之間,其中50表示非常好的訊號。(SNR可以達到99)。
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:校正值