資源描述:
《gps數(shù)據(jù)格式與分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、目前GPS(全球定位系統(tǒng))定位應(yīng)用市場(chǎng)日趨成熟,正在進(jìn)入應(yīng)用的高速發(fā)展時(shí)期??吹秸搲锊粩嘤腥颂釂栮P(guān)于GPS的問題。現(xiàn)將個(gè)人對(duì)GPS的了解寫出來跟大家一塊探討。1、GPS應(yīng)用簡(jiǎn)介近年來GPS系統(tǒng),已經(jīng)在大地測(cè)繪、海上漁用、車輛定位監(jiān)控、建筑、農(nóng)業(yè)等各個(gè)領(lǐng)域得到廣泛應(yīng)用。從九十年代我國引進(jìn)GPS定位技術(shù)開始,經(jīng)過十多年的市場(chǎng)培育,GPS定位應(yīng)用進(jìn)入了發(fā)展的最好時(shí)機(jī),未來十年基于GPS的應(yīng)用將會(huì)改變我們的生活和工作方式。目前市場(chǎng)上的大部分GPS接受模塊都是通過RS232串口與MCU進(jìn)行數(shù)據(jù)傳輸?shù)摹_@些數(shù)據(jù)包括經(jīng)度、緯度、海拔高度、時(shí)間、衛(wèi)星使用情況等基本信息。開發(fā)人員再依據(jù)這些基本數(shù)據(jù)
2、,進(jìn)行數(shù)據(jù)處理來完成整套的定位系統(tǒng)軟件。2、數(shù)據(jù)格式在進(jìn)行數(shù)據(jù)接受編程之前,先介紹一下該模塊的數(shù)據(jù)格式。它支持NMEA-0183輸出格式。信息如下:GGA位置測(cè)定系統(tǒng)定位資料(GlobalPositioningSystemFixData)GSV導(dǎo)航衛(wèi)星資料(GNSSSatellitesinView)RMC導(dǎo)航衛(wèi)星特定精簡(jiǎn)資料(RecommendedMinimumSpecificGNSSData)VTG方向及速度等相關(guān)資料(CourseOverGroundandGroundSpeed)由于文章篇幅問題,筆者在這里只以接收GGA數(shù)據(jù)為例,格式如下:$GPGGA,hhmmss,dddmm
3、.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,,M,x.x,xxxx*CS例:$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,,,,*1F說明見表:上面例子中,我們可讀出位置信息:北緯24度46.5241分,西經(jīng)121度00.1536分格林威治時(shí)間:3點(diǎn)37分44秒3部分程序代碼(c++)//初始化串口//入口:strComm(串口名)//返回:TRUE(成功);FALSE(失敗)BOOLCGPSDlg::InitComm(CStringstrComm){inti;DCBdcb;COMMTIM
4、EOUTSTimeOuts;for(i=0;i<3;i++)//串口最多初始化3次{m_hComm=CreateFile(strComm,GENERIC_READ
5、GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);if(m_hComm!=INVALID_HANDLE_VALUE)break;}if(i==3)//串口初始化失敗{AfxMessageBox("串口初始化失敗...");returnFALSE;}SetupComm(m_hComm,MAXLENGTH,MAXLENGTH);//設(shè)置發(fā)送接收緩沖區(qū)大小TimeOuts.ReadInter
6、valTimeout=0;//設(shè)定5個(gè)超時(shí)參數(shù)TimeOuts.ReadTotalTimeoutMultiplier=0;TimeOuts.ReadTotalTimeoutConstant=500;TimeOuts.WriteTotalTimeoutMultiplier=0;TimeOuts.WriteTotalTimeoutConstant=500;SetCommTimeouts(m_hComm,&TimeOuts);//設(shè)置超時(shí)參數(shù)GetCommState(m_hComm,&dcb);//獲得通信狀態(tài)dcb.fAbortOnError=FALSE;//有錯(cuò)誤不停止dcb.Bau
7、dRate=CBR_4800;//波特率4800dcb.ByteSize=8;//8位dcb.Parity=NOPARITY;//奇校驗(yàn)dcb.StopBits=ONESTOPBIT;//1位停止位SetCommState(m_hComm,&dcb);//設(shè)置通信狀態(tài)PurgeComm(m_hComm,PURGE_TXCLEAR
8、PURGE_RXCLEAR);//清空發(fā)送和接收緩沖區(qū)returnTRUE;}//獲得GPS參數(shù)//注意:從GPS接收到的字符串已經(jīng)在m_strRecv中,由于是定時(shí)接收,所以在這個(gè)字符串的頭和尾都可能存在//不完整的NMEA輸出字符串,在處理時(shí)要特別注意
9、//返回:TRUE(格式正確);FALSE(格式錯(cuò)誤)BOOLCGPSDlg::GetGPSParam(){inti,j;CStringstr,strNEMA;//先判斷是否接收到數(shù)據(jù)if(m_strRecv.IsEmpty())returnFALSE;//若字符串不是以'$'開頭的,必須刪掉這部分不完整的if(m_strRecv[0]!='$'){i=m_strRecv.Find('',0);if(i==-1)returnFALSE;//尾部未接收完整,必須等接