99爱爱,专区,国产激情毛片,国产成人,中文无码A片久久同性,最近中文字幕高清字幕免费mv,国产精品黄页免费高清在线观看

問答

GPS全球定位系統(tǒng)如何定位數(shù)據(jù)的提?

提問者: vidii2572968 2013-03-10 00:00

最佳答案

1 定位信息的接收 通常GPS定位信息接收系統(tǒng)主要由GPS接收天線、變頻器、信號(hào)通道、微處理器、存儲(chǔ)器以及電源等部分組成。由于GPS定位信息內(nèi)容較少,因此多用RS-232串口將定位信息(NEMA0183語(yǔ)句)從GPS接收機(jī)傳送到計(jì)算機(jī)中進(jìn)行信息提取處理。從串口讀取數(shù)據(jù)有多種方法,在此直接使用 Win32 API函數(shù)對(duì)其進(jìn)行編程處理。在Windows下不允許直接對(duì)硬件端口進(jìn)行控制操作,所有的端口均被視為“文件”,因此在對(duì)串口進(jìn)行偵聽之前需要通過打開文件來打開串口,并對(duì)其進(jìn)行相關(guān)參數(shù)配置: m_hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL); //以異步方式打開COM1口 SetCommMask (m_hCom, EV_RXCHAR ) ; //添加或修改Windows所報(bào)告的事件列表 SetupComm (m_hCom,READBUFLEN/*讀緩沖*/,WRITEBUFLEN/*寫緩沖*/); // 初始化通訊設(shè)備參數(shù) // 清除緩沖信息 PurgeComm (m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR) ; // 對(duì)異步I/O進(jìn)行設(shè)置 CommTimeOuts.ReadIntervalTimeout = MAXDWORD ; //接收兩連續(xù)字節(jié)的最大時(shí)間間隔 CommTimeOuts.ReadTotalTimeoutMultiplier =0; //接收每字節(jié)的平均允許時(shí)間 CommTimeOuts.ReadTotalTimeoutConstant = 0 ; //接收時(shí)間常數(shù) SetCommTimeouts (m_hCom , &CommTimeOuts) ; //獲取并設(shè)置串口 GetCommState ( m_hCom, &dcb) ; dcb.BaudRate = CBR_4800; dcb.ByteSize = 8; dcb.Parity = ODDPARITY; dcb.StopBits = ONESTOPBIT ; SetCommState( m_hCom, &dcb); 在成功打開并設(shè)置通訊口后,可采取輪詢串口和事件觸發(fā)兩種方式對(duì)數(shù)據(jù)進(jìn)行接收處理,本文在此采取效率比較高的事件觸發(fā)方式進(jìn)行接收處理,通過等待EV_RXCHAR事件的發(fā)生來啟動(dòng)ReadFile函數(shù)完成對(duì)GPS定位信息的接收: while(true){ WaitCommEvent (m_hCom,&dwEvtMask,NULL); if (dwEvtMask&EV_RXCHAR == EV_RXCHAR) if(ComStat.cbInQue>0) ReadFile(m_hCom,m_readbuf,ComStat.cbInQue,&nLength,&olRead); } 2 提取定位數(shù)據(jù) GPS接收機(jī)只要處于工作狀態(tài)就會(huì)源源不斷地把接收并計(jì)算出的GPS導(dǎo)航定位信息通過串口傳送到計(jì)算機(jī)中。前面的代碼只負(fù)責(zé)從串口接收數(shù)據(jù)并將其放置于緩存,在沒有進(jìn)一步處理之前緩存中是一長(zhǎng)串字節(jié)流,這些信息在沒有經(jīng)過分類提取之前是無法加以利用的。因此,必須通過程序?qū)⒏鱾(gè)字段的信息從緩存字節(jié)流中提取出來,將其轉(zhuǎn)化成有實(shí)際意義的,可供高層決策使用的定位信息數(shù)據(jù)。同其他通訊協(xié)議類似,對(duì)GPS進(jìn)行信息提取必須首先明確其幀結(jié)構(gòu),然后才能根據(jù)其結(jié)構(gòu)完成對(duì)各定位信息的提取。對(duì)于本文所使用的GARMIN GPS天線板,其發(fā)送到計(jì)算機(jī)的數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成,根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC”等。這些幀頭標(biāo)識(shí)了后續(xù)幀內(nèi)數(shù)據(jù)的組成結(jié)構(gòu),各幀均以回車符和換行符作為幀尾標(biāo)識(shí)一幀的結(jié)束。對(duì)于通常的情況,我們所關(guān)心的定位數(shù)據(jù)如經(jīng)緯度、速度、時(shí)間等均可以從“$GPRMC”幀中獲取得到,該幀的結(jié)構(gòu)及各字段釋義如下: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh <1> 當(dāng)前位置的格林尼治時(shí)間,格式為hhmmss <2> 狀態(tài), A 為有效位置, V為非有效接收警告,即當(dāng)前天線視野上方的衛(wèi)星個(gè)數(shù)少于3顆。 <3> 緯度, 格式為ddmm.mmmm <4> 標(biāo)明南北半球, N 為北半球、S為南半球 <5> 徑度,格式為dddmm.mmmm <6> 標(biāo)明東西半球,E為東半球、W為西半球 <7> 地面上的速度,范圍為0.0到999.9 <8> 方位角,范圍為000.0到 359.9 度 <9> 日期, 格式為ddmmyy <10> 地磁變化,從000.0到 180.0 度 <11> 地磁變化方向,為E 或 W 至于其他幾種幀格式,除了特殊用途外,平時(shí)并不常用,雖然接收機(jī)也在源源不斷地向主機(jī)發(fā)送各種數(shù)據(jù)幀,但在處理時(shí)一般先通過對(duì)幀頭的判斷而只對(duì)“$GPRMC”幀進(jìn)行數(shù)據(jù)的提取處理。如果情況特殊,需要從其他幀獲取數(shù)據(jù),處理方法與之也是完全類似的。由于幀內(nèi)各數(shù)據(jù)段由逗號(hào)分割,因此在處理緩存數(shù)據(jù)時(shí)一般是通過搜尋ASCII碼“$”來判斷是否是幀頭,在對(duì)幀頭的類別進(jìn)行識(shí)別后再通過對(duì)所經(jīng)歷逗號(hào)個(gè)數(shù)的計(jì)數(shù)來判斷出當(dāng)前正在處理的是哪一種定位導(dǎo)航參數(shù),并作出相應(yīng)的處理。下面就是對(duì)緩存Data中的數(shù)據(jù)進(jìn)行解幀處理的主要代碼,本文在此只關(guān)心時(shí)間(日期和時(shí)間)和地理坐標(biāo)(經(jīng)、緯度): for(int i=0;i

回答者:NXSB2466jlc2016-03-10 00:00

相關(guān)問題

車友關(guān)注

最新標(biāo)簽

按字母分類:
ABCDEFGHIJKLMNOPQRSTWXYZ0-9