基于LINUX的GPS的應(yīng)用
- 期刊名字:傳感器世界
- 文件大?。?83kb
- 論文作者:陳雪小
- 作者單位:廈門大學(xué)物理與機(jī)電工程學(xué)院電子學(xué)實(shí)驗(yàn)室
- 更新時(shí)間:2020-06-12
- 下載次數(shù):次
Technollogy Application被測與回用葚!N的GP齣應(yīng)周摘要:基于凵-box公司的LEA-5S模塊,介紹了GPS在inux俄人式操作系統(tǒng)上的應(yīng)用以及具體買現(xiàn),并洋細(xì)分析了模塊的硬件實(shí)現(xiàn)以及軟件方面NEA數(shù)據(jù)的接收和解析的方法,最后在實(shí)際平臺(tái)進(jìn)行了調(diào)試與論證。結(jié)果表明,該模塊具有硬件簡單、定位精度高,穩(wěn)定性好的優(yōu)點(diǎn),相應(yīng)的軟件有較好的可移植性,實(shí)際應(yīng)用中效果良好關(guān)鍵詞:Lnux;GPs;NEMA;接收;解析中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1006-883×(2012)020018-04收稿日期:2011-12-12陳雪小引言隨著信息化、智能化、網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)技術(shù)已經(jīng)全面滲透到日常生活中的每個(gè)角落。嵌入式 linux操作系統(tǒng)由于它可以移植到多個(gè)不同的結(jié)構(gòu)的CPU和硬件平臺(tái)上,具有很好的穩(wěn)定性,各種性能的升級能力,并且其是開放的,提供標(biāo)準(zhǔn)的API,能夠方便地與眾多第三方的軟硬件溝通,使其得到了廣泛的應(yīng)用叫。GPS即全球定位系統(tǒng),這個(gè)系統(tǒng)可以保證在任意時(shí)刻,地球上任意一點(diǎn)都可以同時(shí)觀測到4顆衛(wèi)星,以保證用戶GPS模塊可以采集到各觀察點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時(shí)等功能。GPS模塊分為軟GPS和硬GPS。軟GPS一般需要主控芯片控制其運(yùn)行狀態(tài),直接輸出衛(wèi)星數(shù)據(jù),利用應(yīng)用處理器端進(jìn)行解析計(jì)算再轉(zhuǎn)換為標(biāo)準(zhǔn)NMEA(國際海洋電子協(xié)會(huì)),因此驅(qū)動(dòng)相對復(fù)雜。而硬GPS是功能獨(dú)立的模塊,上電就可以運(yùn)行,直接輸出NMEA數(shù)據(jù)(。本文采用的是ubox公司生產(chǎn)的LEA-5S模塊介紹其硬件實(shí)現(xiàn)以及相應(yīng)的軟件實(shí)現(xiàn)。二、GPS模塊硬件GPS RFIN走線按500阻抗匹配實(shí)現(xiàn)LEA-5s模塊B定位精度為25m,定位性能優(yōu)異準(zhǔn)C:160803U60IT確,在防漫反射及數(shù)BHD OLT抗干擾能力方面十分強(qiáng)勁,并且其外圍電路十分簡單TMIEPLLSE中國煤化工其電路圖如圖1所圖1LEA5S外圍電路圖CNMHG示H傳感器世界201202Technology Application如圖1所示,模塊采用33V供電,需要注意的是: options. c cc[VTIME]可以通過UART、USB以及SPI與應(yīng)用和 options. c cc [Vmin對read函數(shù)影響處理器連接和通訊,本文采用UART接較大。VTME指定了等待的時(shí)間,VMIN口。圖中VANT引腳可以對有源天線的初始化指定了讀取字節(jié)的最小數(shù)量正常、開路及短路進(jìn)行檢測,并可以自2、NMEA數(shù)據(jù)的接收動(dòng)在NMEA數(shù)據(jù)里輸出。接收NMEA數(shù)據(jù)本文在非阻塞的方式下采用o多路轉(zhuǎn)接 select對串口文件描述符的狀態(tài)三、GPS模塊軟件實(shí)現(xiàn)解析NMEA數(shù)據(jù)進(jìn)行監(jiān)視。 select函數(shù)原型為:int由于LEA58通過UART直接與處elect( int nfds, fd set * readfds, fd set理器進(jìn)行通訊,因此對處理器而言,驅(qū)顯示NMEA數(shù)據(jù).writefds, fd set*exceptfds, struct timeval動(dòng)主要為 linux標(biāo)準(zhǔn)的串口驅(qū)動(dòng),應(yīng)用時(shí)"timeout);當(dāng)串口句柄沒有變化時(shí),程序只要打開相應(yīng)串口即可。其程序的總體將阻塞,阻塞的時(shí)間取決于 select的第三框圖如圖2所示。圖2模塊總體程序流程圖個(gè)形參 struct timeval'" timeout 3.本文將1、模塊初始化timeout值設(shè)為NULL,程序?qū)⒁恢蓖A裟K初始化主要是對GPS相關(guān)GPo直到串口句柄發(fā)生變化,即只有串口接的設(shè)置和串口的設(shè)置。首先設(shè)置引腳NMEA數(shù)據(jù)收到數(shù)據(jù)時(shí)才不會(huì)阻塞。解析GPS ON為高電平,處理器發(fā)出一個(gè)脈當(dāng)串口文件描述符發(fā)生變化后,調(diào)沖對引腳 GPS RST進(jìn)行復(fù)位,最后打開利用“,·解析出各數(shù)據(jù)域井用read函數(shù)讀取一個(gè)字符到緩存 buffer;電源對其供電。然后打開串口,設(shè)置波存于二維數(shù)據(jù) Comma[(n]中由于本文串口設(shè)置為: options.c_cc特率,數(shù)據(jù)位,奇偶校驗(yàn)位以及停止位[VTIME]=150; options. c cclVMIN]0等信息。 termios函數(shù)族提供了一個(gè)常規(guī)“GGA所以read調(diào)用讀到數(shù)據(jù)則立即返回,否的終端接口,用于控制非同步通信端口。則將為每個(gè)字符最多等待ⅤTIME時(shí)間。結(jié)構(gòu)體為:為使程序有較好的規(guī)范性和可移植hh: mmstruct termio性,本文在程序設(shè)計(jì)中采用狀態(tài)機(jī)的設(shè)經(jīng)度 Comma12]了符型轉(zhuǎn)化為計(jì)方法。由于所接收到的NMEA數(shù)據(jù)unsigned short c_iag,/·輸入模式標(biāo)整型“度分”格式首字符和次字符均為“$”和“G”,本文unsigned short c_onag;P·輸出模式標(biāo)緯度comm4]字子符型轉(zhuǎn)化為將依此為狀態(tài)改變的觸發(fā)條件。程序首志整型“度分格式先定義一個(gè)緩存數(shù)組 recvbuf并初始化一unsigned short c cflag;/·控制模式標(biāo)個(gè)起始狀態(tài),當(dāng)緩存buer收到首字符卩星使用數(shù)景 Comma[門字符型轉(zhuǎn)化為整型$”時(shí),觸發(fā)了狀態(tài)改變?yōu)榈诙€(gè)狀態(tài),unsigned short c Iflag: / local modeags·若不是,則歸為無效數(shù)據(jù),狀態(tài)機(jī)恢復(fù)unsigned char c_ line; / line discipline將 Comma(n全部顯示為起始狀態(tài),并清空 recvbuf緩存;當(dāng)串口接收到下個(gè)字符并判斷是否為“G”字unsigned char c cc[NCC]; / control符,若是,則觸發(fā)第三種狀態(tài),若不是,characters則為無效數(shù)據(jù),狀態(tài)機(jī)恢復(fù)為起始狀態(tài)。串口具體設(shè)置是首先定義了一個(gè)●●●其具體程序如下類型的結(jié)構(gòu)體通過#define STATE REC NULL O#define STATE REC FIRSt 1tcgetattr(fd,& options)來獲得設(shè)置,再對#define STATE REC SECOND 2options進(jìn)行設(shè)置,最后通過 tcsetattr(fd,TCSANOW,&apin.來實(shí)現(xiàn)設(shè)置和同圖3NMEA數(shù)據(jù)解析流程圖H中國煤化工CNMHG9 2012.02 SengoNworldTechnology Application被測與畫用char recvbuf[150 ];據(jù)格式上分析,所有的報(bào)文以“$”為起始標(biāo)志,“,”為switch(rec state)域分隔符,“·”為識(shí)別符,其后兩位為校驗(yàn)值,字符回if(revbuf ="S)4車和換行為結(jié)束符?;谝陨戏治?本文采用逗號(hào)來分rec state= STATE REC SECOND;隔各個(gè)數(shù)據(jù)域,把各個(gè)數(shù)據(jù)域的需要的UTC,經(jīng)度,緯r(shí)ecvbufncount++]=buffer;度等信息提取出來并分別存到數(shù)組中。具體的程序框圖如圖3所示ase STATE REC SECON整個(gè)過程對一幀GPS報(bào)文進(jìn)行解析,有著較高的解if( rebut=G”){析效率。我們利用C語言實(shí)現(xiàn)了該解析算法,因此代碼rec state STATE REC FULL:也具有很強(qiáng)的可移植性。recvbuf[ncount++]-buffer;3 elset表 I NMEA數(shù)據(jù)分析表ncount = 0144A APprintf("It received a unvalib character and the recvbuf序號(hào)數(shù)據(jù)域說明is %sn"recvbuf)1 SGPGGA語句ID,GPS定位信息memset(recvbuf, 0, sizeof(recvbuf));UTC時(shí)間, hhmmss sss,時(shí)分秒格式rec stateSTATE REC FIRST;34250.5緯度 damm, mmmm,度分格式(前導(dǎo)位數(shù)不足則補(bǔ)0)s緯度N(北緯)或S(南緯case STATE REC FULL:514718.5084經(jīng)度 dddmm mmmm,度分格式(前導(dǎo)位數(shù)不足則補(bǔ)0)recvbuf[ncount++]=buffer經(jīng)度E(東經(jīng))或W(西經(jīng))GPS狀態(tài),0=未定位,1=非差分定位parse nmea datai( recvbuf;/對接收數(shù)據(jù)進(jìn)行解析2=差分定位,3=無效PPS,6=正在估m(xù)emset(recvbuf, 0, sizeof(recvbuf));rec state STATE REC FIRST;正在使用的衛(wèi)星數(shù)量(00-12)(前導(dǎo)位數(shù)不足則補(bǔ)0)breakHDOP水平精度因子00.5999)default:10海拔高度(99999999999printf("The data are not valid! n")19.7地球橢球面相對大地水準(zhǔn)面的高度break12M差分時(shí)間(從最近一次接收到差分信號(hào)開始的秒數(shù),如果不是差分定位將3、NMEA數(shù)據(jù)解析為空)NMEA-0183是一套定義了接收機(jī)輸出的標(biāo)準(zhǔn)信息130000差分站ID號(hào)0000-1023(前導(dǎo)位數(shù)不標(biāo)準(zhǔn)的NMEA數(shù)據(jù)包括$ GPGGA、 SGPGSA、$ GPGSV、足則補(bǔ)0,如果不是差分定位將為空)校驗(yàn)值SGPRMC、sGPⅤTG、 SGPGLL等。其中,GPGA定位信息, GPGSA—當(dāng)前衛(wèi)星信息, GPGSV.可見衛(wèi)星信息, GPRMC—推薦定位信息數(shù)據(jù)格式, GPVTG地面四、小結(jié)速度信息, GPGLL一地理定位信息。本文基于 linux嵌入式操作系統(tǒng)設(shè)計(jì)了一種GPS接收例: SGPGGA,092204999,機(jī),硬件方面介紹了U-blox的工作原理,軟件方面較詳細(xì)地介紹了如何接收和解析NMEA數(shù)據(jù)的過程,并基于4250.5589S,147185084,E,104,244,197,M,,0000*1F
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書十本免費(fèi)下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
