gps獲取程序

//端口號和波特率

System.IO.Ports.SerialPort _serialPort = new System.IO.Ports.SerialPort("COM4", 4800);

 StreamWriter t = new StreamWriter(gpsLogFilePath);           

  _serialPort.ReadBufferSize = 1024;//緩存            

 _serialPort.Open();            

for (int i = 0; i < maxRow; i++)            

 {                

               char[] mys = new char[1024];     

            _serialPort.Read(mys,0,1024);         

            t.Write(mys);

            if (message.StartsWith("$GPGGA"))//開始分析       

          {                    

                  string[] me = message.Split(new Char[] { ',' });

                    if (me[2].Length > 0)                  

                    {

                         position[0, N] = me[2].Trim();               

                        position[0, E] = me[4].Trim();                     

                            i++;                   

             }         

        }  

}            

 t.Close();             

   _serialPort.Close();

/////以下是gps數據格式分析/////

以下文章出自:

http://blog.ednchina.com/qhchaowei/

GPS 接收OEM 板的型號甚多、性能各異,但它們的GPS定位信息串行輸出格式大多采用美國國家海洋電子協會制定的NMEA-0183 通信標準格式。其輸出數據採用的是ASCII碼,內容包含了緯度、經度、高度、速度、日期、時間、航向以及衛星狀況等信息,常用語句有6 種,包括GGAGLLGSAGSVRMC VTG。我們也可以通過GPS 專用設置軟件或普通的串口調試軟件發送相應的命令語句給OEM 板,把GPS OEM 板設置爲每隔若干毫秒發送哪種或哪幾種NMEA 語句,然後該OEM 板將這些設置參數存儲到板上的EEPROM 芯片內,此後該OEM 板將按照這些設置每隔相應的毫秒數發送出一個或幾個GPS 輸出NMEA 語句。根據不同的應用需要,設置選擇不同的輸出記錄語句以及它們的發送時間間隔,如本系統我們只關心其時間、經緯度、海拔高度、地面速度信息以及衛星使用數信息,因而可只選用GGAVTG記錄語句並設成每1s發送一次。不過須注意,這些設置信息只在系統本次上電,並設置後方有效,在下次重新上電時需重新設置。

一條$GPGGA 語句包括17個字段:語句標識頭,世界時間,緯度,緯度半球,經度,經度半球,定位質量指示,使用衛星數量,水平精確度,海拔高度,高度單位,大地水準面高度,高度單位,差分GPS數據期限,差分參考基站標號,校驗和結束標記(用回車符<CR>和換行符<LF>),分別用14個逗號進行分隔。該數據幀的結構及各字段釋義如下:

$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> 緯度半球,NS(北緯或南緯) <4> 經度,格式爲dddmm.mmmm(第一位零也將傳送); <5> 經度半球,EW(東經或西經) <6> 定位質量指示,0=定位無效,1=定位有效; <7> 使用衛星數量,從0012(第一個零也將傳送) <8> 水平精確度,0.599.9 <9> 天線離海平面的高度,-9999.99999.9 M    指單位米 <10> 大地水準面高度,-9999.99999.9 M    指單位米 <11> 差分GPS數據期限(RTCM SC-104),最後設立RTCM傳送的秒數量

<12> 差分參考基站標號,從00001023(首位0也將傳送)。

*    語句結束標誌符 xx    $開始到*之間的所有ASCII碼的異或校驗和 <CR>   回車 <LF>   換行

對於VTG信息我們只需要以Km/h 爲單位的速度信息,就不再累述其格式。

MTI-3板輸出的信息可通過串口調試工具在PC機的超級終端中顯示。如在PC機上看到的實時接收GPGGA語句爲: $GPGGA,114641,3002.3232,N,12206.1157,E,1,05,12.9,53.2,M,11.6,M,,*4A     這是一條GPS定位數據信息語句,意思爲世界(格林威治)時間爲114641秒,位置在北緯302.3232分,東經1226.1157分,定位有效,接收到5顆衛星,水平精度12.9米,天線離海平面高度53.2米,所在地離地平面高度11.6米,校驗和爲4AH

GPS 板接收下來的數據流是文本字符串。可根據GPS 輸出數據NMEA-0183 通信標準格式中定義的各種記錄語句的結構組成特點,編制程序解析其中包含的有用信息。但在此需要強調的是,GPS 輸出記錄中各ASCII 碼字段的位數可能隨着實際測量計算出的定位數據的不同而有所變化,因此在進行識別、分解、解析記錄中各字段時必須以逗號分割符“,”作爲各字段的分割標誌,而不應該以各字段的字符位數作爲分割各字段的依據,否則將會導致嚴重的數據錯位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章