天天看點

GPS子產品程式設計之NMEA0183協定

NMEA 0183是美國國家海洋電子協會(National Marine Electronics Association)為海用電子裝置制定的标準格式。現在已經成為GPS導航裝置統一的RTCM(Radio Technical Commission for Maritime services)标準協定。 

  下圖是我調試用的GPS晶片,是深圳一家公司生産的。基本上接上天線,供電引腳電壓正常的話,就可以通過序列槽讀取GPS資料了。是以GPS程式設計最主要的是解析資料,要解析資料就得了解協定格式。

GPS子產品程式設計之NMEA0183協定

下面一組資料,是我在室内且晶片沒接天線的情況下讀一次序列槽所擷取的資料(GPS晶片會源源不斷的輸出資料)。這組資料裡面沒有讀到經緯度等資訊(全部為0),但可以看到NMEA0183的六種輸出協定:$GPGGA、$GPGLL、$GPGSA、$GPGSV、$GPRMC、$GPVTG。

$GPGGA,235949.042,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*45
$GPGLL,0000.0000,N,00000.0000,E,235949.042,V,N*47
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,235949.042,V,0000.0000,N,00000.0000,E,,,140209,,,N*7E
$GPVTG,,T,,M,,N,,K,N*2C      

下面詳細學習這六種不同的輸出協定的資料格式。

(1) $GPGGA (GPS定位資訊)

  協定格式:

$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M, , ,,0000*18      

 協定格式詳細分析:

GPS子產品程式設計之NMEA0183協定

(2) $GPGLL (地理定位資訊)

  協定格式:

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

樣例資料:

$GPGLL,3723.2475,N,12158.3416,W,161229.487,A*2C      

協定格式詳細分析:

GPS子產品程式設計之NMEA0183協定

(3) $GPGSA (目前衛星資訊)

  協定格式:

$GPGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*hh<CR><LF>      

樣例資料:

$GPGSA,A,3,07,02,26,27,09,04,15, , , , , ,1.8,1.0,1.5*33      

協定格式詳細分析:

GPS子產品程式設計之NMEA0183協定
GPS子產品程式設計之NMEA0183協定
(4) $GPGSV(可見衛星資訊)

  協定格式:      
$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,...,<4>,<5>,<6>,<7>*hh<CR><LF>      

樣例資料:

$GPGSV,2,1,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71
$GPGSV,2,2,07,09,23,313,42,04,19,159,41,15,12,041,42*41      

需要注意的是這裡的樣例資料有2條,這是因為目前可見衛星一共有7個,但是每條語句最多包括四顆衛星的資訊,是以分成了2條語句。每顆衛星的資訊有四個資料項,即:<4>(衛星編号)、<5>(衛星仰角)、<6>(衛星方位角)、<7>(信噪比)。

  協定格式詳細分析(隻分析第1條樣例資料語句):

GPS子產品程式設計之NMEA0183協定

(5) $GPRMC(最簡定位資訊)

  協定格式:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>      

樣例資料:

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10      

協定格式詳細分析:

GPS子產品程式設計之NMEA0183協定

(6) $GPVTG(地面速度資訊)

  協定格式:

$GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*hh<CR><LF>      

樣例資料:

$GPVTG,309.62,T, ,M,0.13,N,0.2,K*6E      

協定格式詳細分析:

GPS子產品程式設計之NMEA0183協定

 有了上面對NMEA0183協定的詳細學習,剩下的就是序列槽程式設計了。無論是通過單片機,還是Windows/WinCE/Linux系統,編寫序列槽程式把這些資料讀取到都是比較容易的,剩下就是通過c++那些查找算法函數,或者MFC CString字元串的相關函數進行解析就OK了。

轉:http://blog.csdn.net/northcan/article/details/7261310