NMEA-0813文檔解析

寫在前面

  1. 首先吐槽一下本人的軟件課程設(shè)計--<基于GPS的位置追蹤及地理圍欄>,大概是大學(xué)以來最難的課設(shè)了,但是還是把它征服了,HAPPY! 本著開源的精神,課程結(jié)束后會放上代碼鏈接,現(xiàn)在不想進行復(fù)習(xí),就寫點東西打發(fā)下時間吧。
  2. 試一下Atom + Markdown Preview Enhanced插件的強勁效果,說不定會放棄Notepad++轉(zhuǎn)向atom陣營。
  3. 廢話不多說了,現(xiàn)在開始正文吧

Nmea

  1. 定義:
    由美國國家海洋電子協(xié)會開發(fā)的,目前GPS接收機上使用最廣泛的標(biāo)準(zhǔn)協(xié)議,它定義了多種語句,包含了關(guān)于定位結(jié)果、信號狀態(tài)、工作模式等豐富的信息
  2. 長相:
$GPGSV,4,1,14,04,00,000,37,10,31,178,34,12,05,035,15,14,64,358,31*7C
$GPGSV,4,2,14,22,20,309,25,26,36,205,36,29,16,099,22,31,56,309,32*70
$GPGSV,4,3,14,32,67,063,30,01,00,000,,03,05,322,,16,05,206,*7F
$GPGSV,4,4,14,18,05,161,,25,41,046,*76
$GLGSV,2,1,08,66,66,326,30,77,30,247,23,76,61,336,29,75,25,030,19*6C
$GLGSV,2,2,08,65,47,153,29,67,13,329,26,85,00,000,,72,02,150,*60
$GPGSA,A,3,04,10,12,14,22,26,29,31,32,,,,1.2,0.9,0.8*3F
$GPVTG,250.2,T,250.2,M,1.3,N,2.4,K,D*22
$GPRMC,093053,A,3031.066590,N,11425.706293,E,1.3,250.2,171217,3.5,W,D*05
$GPGGA,093053,3031.066590,N,11425.706293,E,2,09,0.9,68.0,M,-12.0,M,,*5A
  1. 格式:
    為了提高實用性,得到我們需要的信息,故只選擇解析$GPRMC/GNRMC語句,以下解釋來自nmea_gprmc,$GPRMC格式如下:

/*
//        $GPRMC(Recommended Minimum Specific GPS/TRANSIT Data)
//
//        幀頭    UTC時間    狀態(tài)   緯度  北緯/南緯   經(jīng)度  東經(jīng)/西經(jīng)   速度
//        $GPRMC  hhmmss.sss  A/V   ddmm.mmmm   N/S   dddmm.mmmm  E/W    節(jié)
//
//        方位角   UTC日期   磁偏角     磁偏角方向 模式      校驗   回車換行
//          度     ddmmyy   000 - 180    E/W       A/D/E/N   *hh     CR+LF
//
//        格 式: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
//        $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
//
//        $GPRMC,175622,A,2921.219000,N,11946.287000,E,13.00,348.27,20161006,,,D*4E
//
//        說 明:
//        字段 0:$GPRMC,語句ID,表明該語句為Recommended Minimum Specific GPS/TRANSIT Data(RMC)推薦最小定位信息
//          字段 1:UTC時間,hhmmss.sss格式
//          字段 2:狀態(tài),A=定位,V=未定位
//          字段 3:緯度ddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)
//          字段 4:緯度N(北緯)或S(南緯)
//          字段 5:經(jīng)度dddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)
//          字段 6:經(jīng)度E(東經(jīng))或W(西經(jīng))
//          字段 7:速度,節(jié),Knots(一節(jié)也是1.852千米/小時)
//          字段 8:方位角,度(二維方向指向,相當(dāng)于二維羅盤)
//          字段 9:UTC日期,DDMMYY格式
//          字段10:磁偏角,(000 - 180)度(前導(dǎo)位數(shù)不足則補0)
//          字段11:磁偏角方向,E=東,W=西
//          字段12:模式,A=自動,D=差分,E=估測,N=數(shù)據(jù)無效(3.0協(xié)議內(nèi)容)
//          字段13:校驗值


// NMEA Decoding here
// Wait for gps data, want RMC sentence:
//$GPRMC,230046,A,3759.8006,N,12205.4429,W,0.0,190.3,260702,15.1,E,A*3C
//              |     |    /     |      /   |   |
//$GPRMC,233834,A,3759.842,N,12205.440,W,000.0,173.7,200602,015.8,E*63
//              |    |     |    |      |   |     |             |     |--checksum
//              |    |     |    |      |   |     |             |- Magnetic Deviation?
//              |    |     |    |      |   |     |- course over ground
//              |    |     |    |      |   |- speed over ground
//              |    |     |    |      |--Lon E/W
//              |    |     |    |-- Lon 122' 5.44"
//              |    |     |-- Lat N/S
//              |    |-- Lat 37' 59.842"
//              |-- A=Good, V=Bad

*/

NMEA解析

以下代碼來自nmea_gprmc,無比感謝這位老哥在我最需要的時候送了一波溫暖,感謝!大概這就是開源的魅力所在吧,不要忘了給人家點個贊。

  1. 數(shù)據(jù)格式,自定義結(jié)構(gòu)體存著,常用信息如下
typedef struct {
    double  rcv_time;           //時間
    char    status;             //狀態(tài)
    double  lat;                //緯度
    char    lat_direct;         //北緯 or 南緯
    double  lon;                //經(jīng)度
    char    lon_direct;         //東經(jīng) or 西經(jīng)
    double  speed;              //速度
    double  cog;                //方位角
    int     date;               //日期
    double  mag_variation;      //磁偏角
    char    mag_var_direct;     //磁偏角方向
    char    mode;               //校驗類型
    int     chksum;             //校驗和
} gprmc_format;
  1. 解析代碼
    結(jié)構(gòu)還是很清晰的,閱讀量并不大,自己去github上讀源碼吧,然后根據(jù)自己的需求修改
  2. 效果


    詳細(xì)記錄圖

    這是我自己搭的UI,當(dāng)然你自己也可以設(shè)計一些更騷氣的對吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,650評論 4 61
  • 現(xiàn)在的自己,很迷茫。工作本身并不喜歡,之前有很多小伙伴在,大家嘻嘻哈哈日子也還可以過?,F(xiàn)在都走了,在公司已經(jīng)讓我覺...
    阿江里閱讀 142評論 0 0
  • 襯衫收到了喜歡嗎?其實我想說為了買件滿意的格子襯衫我下載了4個購物app挑了2個多小時最后挑花眼了實在不知道買那件...
    簡單安靜就好閱讀 280評論 0 0
  • 2017年4月9日 1.感恩爸媽幫助照顧孩子。 2.感恩兒子讓我成長,現(xiàn)在小脾氣見長。 3.感恩先生的關(guān)心,為家努...
    馮梓源閱讀 253評論 0 0
  • 護照和港澳通行證(本式)過期了,今天,跟老姐和西蘭花,一起到辦證大廳重新辦理。好多人!不過,現(xiàn)在有自助辦證一體機,...
    Sky楊閱讀 284評論 0 1

友情鏈接更多精彩內(nèi)容