• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VC++6.0的GPS數(shù)據(jù)采集模塊的軟件實(shí)現(xiàn)

      2014-04-29 00:44:03房蘭剛
      電子世界 2014年15期
      關(guān)鍵詞:數(shù)據(jù)格式經(jīng)度示例

      房蘭剛

      【摘要】本論文介紹了遵循NMEA0183協(xié)議的GPS定位的數(shù)據(jù)格式,提出了利用API函數(shù)進(jìn)行GPS串口通訊的方法,設(shè)計(jì)了具體的軟件設(shè)計(jì)和實(shí)現(xiàn)。運(yùn)行結(jié)果表明,所設(shè)計(jì)的系統(tǒng)運(yùn)行穩(wěn)定、定位準(zhǔn)確、實(shí)時(shí)性強(qiáng)。為進(jìn)一步進(jìn)行車輛的導(dǎo)航定位提供了保障。

      【關(guān)鍵詞】VC++6.0;GPS;NMEA0183協(xié)議;串口通信

      一、前言

      GPS是20世紀(jì)70年代由美國(guó)陸??杖娐?lián)合研制的新一代空間衛(wèi)星導(dǎo)航定位系統(tǒng)。為了實(shí)現(xiàn)GPS數(shù)據(jù)采集、接收與處理以及計(jì)算機(jī)與GPS接收機(jī)的串口通信,計(jì)算機(jī)的串行端口就為計(jì)算機(jī)和GPS 接收機(jī)提供了數(shù)據(jù)傳輸通道。Visual C++是一種可視化的語(yǔ)言,還提供ODBC類[2]。本系統(tǒng)的數(shù)據(jù)采集主要遵循NMEA0183協(xié)議,對(duì)之進(jìn)行處理后,通過(guò)ODBC接口將用戶位置、時(shí)間、速度和航向等信息保存到用戶建立的數(shù)據(jù)庫(kù)中,為數(shù)據(jù)處理提供定位信息。

      二、GPS定位的數(shù)據(jù)格式――NMEA0183數(shù)據(jù)格式

      NMEA0183協(xié)議是美國(guó)國(guó)家海洋電子協(xié)會(huì)(National Marine Electronics Association)制定的GPS接口協(xié)議標(biāo)準(zhǔn)[3]。在串口通訊模塊中,系統(tǒng)采用的GPS數(shù)據(jù)格式是RMC數(shù)據(jù)格式,通過(guò)判斷信號(hào)狀態(tài)來(lái)確認(rèn)是否為有效信號(hào)。采集的數(shù)據(jù)包括經(jīng)度、緯度、時(shí)間、狀態(tài)、航向角、速度等。

      本文采用的是GPRMC定位語(yǔ)句,采集程序忽略其余的信息,GPRMC定位語(yǔ)句結(jié)構(gòu)如下:

      $GPRMC,HHMMSS,A,AAAA.AAAA,N,LLLLL.LLLL,E,VVV.V,DDD.D,DDMMYY,MMM.M,W,A,..SS,CRLF

      以下面的語(yǔ)句為例進(jìn)行說(shuō)明語(yǔ)句的含義:

      $GPRMC,013946.00,A,3202.1855,N,11849.0769,E,0.05,218.30,111106, 013.5,W,A*20..

      在此列中各數(shù)據(jù)段通過(guò)逗號(hào)分開(kāi),其中:

      ◇“$GPRMC”為幀頭,表示這條語(yǔ)句為RMC格式語(yǔ)句

      ◇01 UTC時(shí)間,hhmmss.sss(時(shí)分秒.毫秒)格式。UTC時(shí)間為GPS系統(tǒng)所采用的時(shí)間系統(tǒng),以原子時(shí)(ATI-Atomic Time International)的秒長(zhǎng)作為時(shí)間單位,時(shí)間起算原點(diǎn)UTC零時(shí)定義在1980年1月6日子夜零點(diǎn)。示例中時(shí)間01時(shí)39分46.00秒。

      ◇02 定位狀態(tài),A=有效定位,V=無(wú)效定位 。

      ◇03 緯度:格式為“ddmm.Mmmm”;示例中為“北緯(N)32度02.1855分”。

      ◇04 經(jīng)度:格式為“dddmm.Mmmm”;示例為“東經(jīng)(E)118度49.0769分”。

      ◇05 相對(duì)位移速度:0.05 knots。

      ◇06 表示方位角,即相對(duì)位移方向:從000.0°~359.9°示例為“218.30度”。

      ◇07 日期:111106為UTC標(biāo)準(zhǔn)日期,格式為“mm/dd/yy”11日11月06年

      ◇08 013.5——磁偏移量值。表示磁極變量值為13.5,單位是度。

      ◇09 W表示地磁變化方向,包括w或E。

      ◇10 E*6E——校驗(yàn)碼,用來(lái)驗(yàn)證語(yǔ)句中數(shù)據(jù)的完整性。

      在這些數(shù)據(jù)中,本研究主要關(guān)心的是地理坐標(biāo)和時(shí)間,即緯度、經(jīng)度、定位狀態(tài)和UTC日期、時(shí)間信息。

      三、GPS的串口通信的軟件設(shè)計(jì)

      串口通信的軟件設(shè)計(jì)主要是針對(duì)GPS數(shù)據(jù)的實(shí)時(shí)接收、存儲(chǔ)和坐標(biāo)轉(zhuǎn)換,使其融為一體。其中主要用到了GPS串口的開(kāi)發(fā)、數(shù)據(jù)庫(kù)處理以及坐標(biāo)轉(zhuǎn)換的相關(guān)編程。

      根據(jù)GPS模塊數(shù)據(jù)傳輸機(jī)制,必須給串口設(shè)置如下的參數(shù):數(shù)據(jù)傳輸率9600bit/s,數(shù)據(jù)位8bit,停止位1bit,無(wú)奇偶校驗(yàn)位,可以根據(jù)需要選擇不同的COM口。針對(duì)有些計(jì)算機(jī)上沒(méi)有留有COM口,也可以使用USB轉(zhuǎn)COM口工具,直接使用計(jì)算機(jī)上的USB接口。GPS信號(hào)輸出時(shí)間間隔通常在0~2s范圍內(nèi),在實(shí)時(shí)性跟蹤時(shí),采用每隔1s采樣一次。本程序中每1s更新一次經(jīng)度、緯度、時(shí)間、速度和航向等數(shù)據(jù)。

      在本系統(tǒng)中,串口通訊技術(shù)采用API(Appli-

      cation Programming Interface)函數(shù)的方法,通過(guò)設(shè)置CSerialPortEx類為串口通信支持類和CConfigDlg類為串口參數(shù)配置類,先對(duì)串行口通信參數(shù)進(jìn)行選擇;然后在串口數(shù)據(jù)到達(dá)時(shí),CSerialPortEx類將數(shù)據(jù)發(fā)送到程序主窗口;控制模塊每隔一段時(shí)間察看一次主窗口串口數(shù)據(jù)接收緩沖區(qū),并對(duì)符合要求的數(shù)據(jù)進(jìn)行處理后保存在一個(gè)數(shù)據(jù)文件中以供后續(xù)處理使用,同時(shí)請(qǐng)求顯示模塊更新數(shù)據(jù)。

      其具體操作步驟如下:

      1.添加SerialPort.h和SerialPort.cpp兩文件到本程序中。創(chuàng)建串口參數(shù)配置類CConfigDlg。

      2.將這兩類的頭文件名添加到主程序中。定義CSerialPortEx類的變量m_Port;通過(guò)設(shè)定定時(shí)器OnTimer函數(shù)來(lái)響應(yīng)ON(開(kāi)始接收)和OFF(停止接收)按鈕。程序如下:

      void CGPSView::OnReceiveStart()//開(kāi)始接收

      {

      m_Port.StartMonitoring();//打開(kāi)線程,開(kāi)始接收串口數(shù)據(jù)

      m_nTimer=SetTimer(1,1000,0);//啟動(dòng)定時(shí)接收器,每隔1s接收一次

      }

      void CGPSView::OnReceiveStop()//停止接收

      {

      m_Port.StopMonitoring();//關(guān)閉線程,停止接收串口數(shù)據(jù)

      KillTimer(1);//關(guān)閉定時(shí)接收器

      }

      3.采用查詢方式:設(shè)置一個(gè)定時(shí)器,每隔一段時(shí)間察看一次串口數(shù)據(jù)接收緩沖區(qū),在定時(shí)器OnTimer函數(shù)中確定數(shù)據(jù)的提取方法。通過(guò)查找上一個(gè)GPS語(yǔ)句結(jié)束標(biāo)志LF和下一個(gè)CR結(jié)束標(biāo)志之間的一句GPS語(yǔ)句。依次按照GPGGA輸出數(shù)據(jù)格式查找獲取數(shù)據(jù),并分別給對(duì)話框中的變量中。如下所示:

      void CGPSView::OnTimer(UINT nIDEvent)

      {

      if(nIDEvent!=1)

      return;//若不是GPS定時(shí)處理事件,則返回

      while((m_strReceived.Find(0x0d)!=-1)&&(m_strReceived.Find(0x0a)!=-1))

      //循環(huán)讀取GPGGA定位語(yǔ)句

      {

      int startLF=m_strReceived.Find(0x0a);

      //startLF:緩沖區(qū)中第一個(gè)GPS語(yǔ)句結(jié)束標(biāo)志LF的位置,即下一GPS語(yǔ)句開(kāi)始標(biāo)志

      int endCR=m_strReceived.Find(0x0d);

      //endCR:緩沖區(qū)中第一個(gè)GPS語(yǔ)句結(jié)束標(biāo)志CR的位置。

      //若endCR在startLF之前,則兩個(gè)結(jié)束標(biāo)志屬于同一GPS語(yǔ)句,需繼續(xù)搜索下一個(gè)LF標(biāo)志

      if(startLF>endCR)

      endCR=m_strReceived.Find(0x0d,startLF);

      //復(fù)制這一句GPS語(yǔ)句,并從接收緩沖區(qū)中刪除從上一句結(jié)束標(biāo)志LF到本句結(jié)束標(biāo)志CR間的數(shù)據(jù)

      CString msg=m_strReceived.Mid(startLF+1,

      endCR-startLF-1);

      m_strReceived.Delete(0,endCR+1);

      //判斷是否GPGGA定位語(yǔ)句,若不是則跳過(guò)后續(xù)循環(huán),繼續(xù)處理下一句,否則刪除“$GPGGA”,繼續(xù)處理該句的其它部分。

      if(msg.Left(6).Compare("$GPGGA")!=0)

      continue;

      msg.Delete(0,msg.Find(',')+1);

      …………………………………………

      }

      }

      運(yùn)行結(jié)果如圖1所示,分別獲取了經(jīng)度、緯度、速度、航向、海拔高度等數(shù)值。

      四、結(jié)束語(yǔ)

      利用面向?qū)ο蟮目梢暬Z(yǔ)言VC++6.0封裝的API函數(shù)實(shí)現(xiàn)了計(jì)算機(jī)和GPS的串口通信,包括GPS串口的開(kāi)發(fā)、數(shù)據(jù)庫(kù)處理以及坐標(biāo)轉(zhuǎn)換。實(shí)驗(yàn)通過(guò)把GPS 接收機(jī)和電腦的串口相連,快速獲取了GPS 定位導(dǎo)航信息,運(yùn)行結(jié)果證明系統(tǒng)運(yùn)行穩(wěn)定、定位精度高、定位誤差小,實(shí)時(shí)性強(qiáng),為進(jìn)一步研究GPS的定位導(dǎo)航提供了理論依據(jù)。

      參考文獻(xiàn)

      [1]羅鳴,曹沖,肖雄兵等.全球定位系統(tǒng)[M].北京:電子工業(yè)出版社,2008.

      [2]Davis Chapman馱長(zhǎng)樂(lè)譯.學(xué)用Visual C++6.0[M].北京清華大學(xué)出版社,2004.

      [3]唐旭榮,唐斌,蔣德.衛(wèi)星導(dǎo)航軟件接收機(jī)原理與設(shè)計(jì)[M].北京:國(guó)防工業(yè)出版社,2008.

      指導(dǎo)老師、通訊作者:吳延霞。

      猜你喜歡
      數(shù)據(jù)格式經(jīng)度示例
      大還是小
      巧用四步法 妙解地方時(shí)
      巧用四步法 妙解地方時(shí)
      2019年高考上海卷作文示例
      常見(jiàn)單位符號(hào)大小寫混淆示例
      山東冶金(2019年5期)2019-11-16 09:09:22
      “全等三角形”錯(cuò)解示例
      在智能交通系統(tǒng)中PLC數(shù)據(jù)格式轉(zhuǎn)換方法的研究
      論子函數(shù)在C語(yǔ)言數(shù)據(jù)格式輸出中的應(yīng)用
      DWG與SHP數(shù)據(jù)格式互轉(zhuǎn)換方法研究——以龍巖規(guī)劃測(cè)繪數(shù)據(jù)為例
      抗生素入選2014年“經(jīng)度獎(jiǎng)”研究課題
      宁武县| 六枝特区| 纳雍县| 恭城| 襄汾县| 云和县| 洱源县| 云龙县| 宣恩县| 宽城| 大厂| 内黄县| 静乐县| 五大连池市| 武隆县| 天镇县| 云林县| 宁陕县| 天柱县| 治县。| 永吉县| 克拉玛依市| 马边| 旌德县| 杭锦旗| 曲靖市| 承德市| 香河县| 金沙县| 明水县| 泾阳县| 肥城市| 沁源县| 宜宾县| 武乡县| 三门县| 张掖市| 阿城市| 乡城县| 浮山县| 海兴县|