2011-03-22 78 views
0

我有一個GPS小工具,我想知道如何使用C++(座標)從它接收信息?從小工具讀取GPS數據

+0

至少你需要指定你正在使用哪種品牌/型號 – 2011-03-22 07:38:51

+3

-1:對不起,但這個問題是無法解析的。什麼小工具(make/model)?它如何連接到電腦(USB,串口,藍牙,Wifi)?你在哪個平臺上運行(Windows,Unix,Max,Linix)? – 2011-03-22 07:46:37

回答

5

這是可能比評論表明更容易回答。雖然大多數GPS單元支持專有(通常)二進制協議,但幾乎所有接近電流的GPS單元都支持NMEA格式的數據,並將默認提供。無論是通過串口,藍牙還是USB連接,大多數用戶程序都像串口一樣。只要打開一個串行端口並從中讀取數據,您就可以支持90%的合理當前的GPS單位等其他功能。唯一難看的部分是數據格式的NMEA standard相當昂貴(儘管它不像過去那麼糟糕 - 現在你可以只購買你關心的部分,也就是說只有附錄B,IIRC )。幸運的是,除非您打算讓您的軟件通過海上或飛機導航認證,否則您可能不需要這麼做 - 有相當數量的web sites涵蓋了您可能關心的(少數)消息類型。對於這個問題,如果你只是在正確的COM端口上打開一個終端程序並查看數據,就不難找到自己的緯度/經度(至少如果你至少對你的位置有一個模糊的概念是)。

這是基本上 CSV格式 - 每行一個記錄,用逗號分隔字段。這些都是正常的ASCII/ANSI文本,所以獲取座標主要是檢查第一個字段是否是正確的記錄(「$ GPGGA」),然後獲取字段3,4,5和6(3和4是緯度和經度5和6 - 3和5給出數字,4和6有「N」或「S」和「E」或「W」來表示南北緯度和東/西經度)。您可能還需要檢查後面的字段是否包含「1」或「2」,分別表示正常或差分GPS定位(「0」表示沒有GPS定位,因此無效數據)。

這並不重要,但您應該也許會意識到,您可能會收到其他幾種字段類型,其中一些字段類型也包含修復數據。 $ GPGGA恰好是我用過的 - 有些其他人可能同樣優秀,但我從來沒有太多理由去看待其他人,因爲那個人已經足夠滿足我所需要/做的了。

編輯:這裏的數據,因爲它從GPS接收年代,在這種情況下通過藍牙虛擬串口正是的樣本轉儲:

$ GPGGA,090809.103,3901.4345,N,10448.2482,W,0 ,00,50.0,2078.2,M,-21.4,M,0.0,0000 * 43 $ GPRMC,090809.103,V,3901.4345,N,10448.2482,W,0.00,0.00,220311 ,, * 07 $ GPVTG,0.00, T,M,0.00,N,0.0,K * 60 $ GPGGA,090810.103,3901.4345,N,10448.2482,W,0,00,50.0,2078.2,M,-21.4,M,0.0,0000 * 4B

在第二個$ GPGGA記錄中:

$ GPGGA,090810.103,3901.4345,N,10448.2482,W,0,00,50.0,2078.2,男,-21.4,M 0.0,0000 * 4B

「$ GPGGA」 是記錄(「字句「)類型標識符。
「090810.103」是當前UTC時間。
「3901.4345,N」是緯度。
「10448.2482,W」是經度。
下一個:「0」告訴你前面的經緯度是而不是有效。

的經度和緯度都格式化(IIRC)與最後兩位之前小數點爲分,什麼是小數點後一分鐘的分數,所以`3901.4345" 的真正含義39º 1.4345'north緯度

+0

但是,NMEA數據是否與衛星信息有關?據我所知,GPS設備收到NMEA數據和計數的公關通過三角測量的可觀區域?或者NMEA數據是我所需要的? – KAGDGAP 2011-03-22 12:36:51

+1

@KAGDGAP:NMEA數據確實包含有關目前GPS正在接收數據的衛星的數據,但GPS本身會進行三角測量,所以NMEA數據將包含經度和緯度(以及高度,速度,航向等)我將編輯一些示例數據到答案中。 – 2011-03-22 14:46:42

+0

@KAGDGAP,GPS不接收來自衛星的NMEA。它自己生成它。你想要的是*推薦的最小句子*或GPRMC。見http://www.codepedia.com/1/The+GPRMC+S句子 – Brad 2011-03-22 15:05:00