NMEA 0183 協議解析任務

2021-08-22 02:32:09 字數 1657 閱讀 7261

工作遇到乙個任務:對gps模組的資料進行解析和篩選。、

要求環境:c語言

gps輸出的資料格式如下:

$gpgga,024131.194,8960.0000,n,00000.0000,e,0,0,,137.0,m,13.0,m,,*4a

$gpgsa,a,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$gpgsv,2,1,8,07,,,34,03,,,36,11,,,35,13,,,36*45

$gpgsv,2,2,8,23,,,36,19,,,38,16,,,34,06,,,32*41

$gprmc,024131.194,v,8960.0000,n,00000.0000,e,0.000,0.00,090180,,,n*48

$gpvtg,0.00,t,,m,0.000,n,0.000,k,n*32

$gpgga,024132.194,8960.0000,n,00000.0000,e,0,0,,137.0,m,13.0,m,,*49

$gpgsa,a,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$gpgsv,2,1,8,07,,,33,03,,,36,11,,,34,13,,,36*43

$gpgsv,2,2,8,23,,,35,19,,,38,16,,,33,06,,,32*45

$gprmc,024132.194,v,8960.0000,n,00000.0000,e,0.000,0.00,090180,,,n*4b

$gpvtg,0.00,t,,m,0.000,n,0.000,k,n*32

$gpgga,024133.093,8960.0000,n,00000.0000,e,0,0,,137.0,m,13.0,m,,*4e

$gpgsa,a,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$gpgsv,2,1,8,07,,,33,03,,,36,11,,,34,13,,,36*43

$gpgsv,2,2,8,23,,,35,19,,,38,16,,,33,06,,,33*44

$gprmc,024133.093,v,8960.0000,n,00000.0000,e,0.000,0.00,090180,,,n*4c

解析輸出的資料需要可以使用:是否定位、小於/大於速度值、參與定位的衛星顆數、衛星訊號強度為條件進行組合篩選。

-------------------------

序號 年月日時分秒 經度 緯度 定位狀態 速度 參與定位的衛星顆數 衛星訊號強度

下面是對任務的思考:

要求篩選是否定位功能:

定位功能在 gpgga的第6位 gps(6)gps狀態位: 0 未定位 1 非差分定位  2 差分定位

小於/大於速度值 在 gpvtg的(3)(4)地面速率位:000-999

參與定位的衛星顆數 在gpgga的(7)位 正在使用的衛星數量(00-12)

衛星訊號強度在 gpgsv的(7)位訊雜比(衛星強度,沒有跟蹤到衛星時為空)

c語言軟體設計思路:

首先將gps資料解析出來存入自己定義的結構體中。由於任務給的原始碼是存放在txt檔案中,需要用檔案io函式

fopen,fgets,fclose,等函式將文字開啟並讀取。同時存入字串陣列中供後續篩選條件判斷。

篩選條件初步設計單個條件和組合條件篩選。

NMEA 0183協議介紹

nmea 0183 是美國國家海洋電子協會 national marine electronics association 為海用電子裝置制定的標準格式。目前業已成了gps 導航裝置統一的rtcm radio technical commission for maritime services 標準...

常用 NMEA 0183語句定義

gpgga 例 gpgga,092204.999,4250.5589,s,14718.5084,e,1,04,24.4,19.7,m,0000 1f 欄位0 gpgga,語句id,表明該語句為global positioning system fix data gga gps定位資訊 欄位1 utc...

NMEA 0183之 GPRMC資料處理

nmea 0183 u 以下為gps 晶元串列埠發出的資料 201512 15 42 3712,gptxt,antstatus short 43 201512 15 42 37 gngga,074219.000,3021.516740,n,12005.998703,e,1,9,1.09,20.996...