亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法與流程

文檔序號:12359829閱讀:315來源:國知局
一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法與流程

本發(fā)明涉及GPS定位技術(shù)領(lǐng)域,具體是一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法。



背景技術(shù):

隨著人們生活水平的日益提高,旅游在人們的生活中的地位已經(jīng)越來越重要。在人們越來越熱衷于旅游的同時(shí),一些不可忽略的問題凸現(xiàn)出來,傳統(tǒng)的人工導(dǎo)游已經(jīng)不能滿足游客的需求了。這就需要一種能夠提供更加方便,更加貼心的智能導(dǎo)游。它可以向游客提供基本的導(dǎo)游解說,位置動(dòng)態(tài)顯示,景點(diǎn)預(yù)覽,目的地最優(yōu)路徑規(guī)劃,團(tuán)隊(duì)信息交互及集合等。在整個(gè)系統(tǒng)中最重要的一步是定位導(dǎo)航數(shù)據(jù)的提取。



技術(shù)實(shí)現(xiàn)要素:

針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法。

本發(fā)明的技術(shù)方案是:

一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法,包括以下步驟:

步驟1:定義GPS定位導(dǎo)航數(shù)據(jù)格式:采用NEMA0183格式,主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成;根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同;

GPS,即Global Positioning System;

步驟2:GPS定位導(dǎo)航數(shù)據(jù)的接收:通過RS-232串口將定位信息從GPS接收機(jī)獲取,包括經(jīng)緯度、海拔高度;

步驟2-1:串口初始化操作;

步驟2-2:GPS定位導(dǎo)航數(shù)據(jù)的接收:采用輪詢串口方式或事件觸發(fā)方式對GPS定位信息進(jìn)行接收;

步驟3:GPS定位導(dǎo)航數(shù)據(jù)的處理;

步驟3-1:從串口接收到的數(shù)據(jù)并將被放置于緩存;

步驟3-2:開辟一個(gè)緩沖區(qū),調(diào)用ReadFile函數(shù)將串口緩存中的GPS定位導(dǎo)航數(shù)據(jù)讀到該緩沖區(qū)中;

步驟3-3:對所述緩沖區(qū)中的數(shù)據(jù)進(jìn)行處理:調(diào)用strstr函數(shù)在緩沖區(qū)中尋找數(shù)據(jù)幀的位置:如果找到,則返回?cái)?shù)據(jù)幀的首地址,并賦給字符串指針變量dwFind-Address;如果沒找到,則返回0。

所述步驟2-1串口初始化操作的具體步驟如下:

步驟2-1-1:使用Win32 API函數(shù)CreateFile打開串口;

步驟2-1-2:進(jìn)行串口配置;

步驟2-1-3:進(jìn)行超時(shí)參數(shù)的設(shè)置;

步驟2-1-4:進(jìn)行串口緩沖區(qū)的設(shè)置。

所述步驟2-1-2進(jìn)行串口配置過程中,先用GetCommState檢索端口的當(dāng)前設(shè)置修改其中的部分字段,然后再用函數(shù)SetCommState進(jìn)行端口設(shè)定。

有益效果:

本發(fā)明方法首先分析了GPS導(dǎo)航數(shù)據(jù)的格式及在智能導(dǎo)游系統(tǒng)中需要的關(guān)鍵數(shù)據(jù)。然后提取GPS導(dǎo)航數(shù)據(jù)的串口操作及緩沖區(qū)的設(shè)置。最后給出了GPS串口通信及其定位導(dǎo)航數(shù)據(jù)提取模塊的實(shí)現(xiàn)方法,為智能導(dǎo)游系統(tǒng)的GPS導(dǎo)航提供精準(zhǔn)的數(shù)據(jù)支持。本方法可以將GPS定位導(dǎo)航信息從GPS接收機(jī)完整接收,通過定位參數(shù)的提取,可將其應(yīng)用于其他高層應(yīng)用決策如智能導(dǎo)游系統(tǒng)及各種導(dǎo)航定位系統(tǒng)等。

附圖說明

圖1是本發(fā)明具體實(shí)施方式的緩沖區(qū)大小影響提取定位數(shù)據(jù)命中率的情況;

圖2是本發(fā)明具體實(shí)施方式的智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法流程圖。

具體實(shí)施方式

下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式做詳細(xì)說明。

一種智能導(dǎo)游系統(tǒng)中GPS定位導(dǎo)航數(shù)據(jù)的提取方法,包括以下步驟:

步驟1:定義GPS定位導(dǎo)航數(shù)據(jù)格式:采用NEMA0183格式,主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成;根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同;

GPS利用導(dǎo)航衛(wèi)星進(jìn)行測時(shí)和測距,以構(gòu)成全球定位系統(tǒng)。這一系統(tǒng)由空間星座、地面監(jiān)控系統(tǒng)、用戶接收機(jī)三大部分組成。用戶通過接收機(jī)接收GPS衛(wèi)星信號,經(jīng)信號處理而獲得三維位置、航向和時(shí)間等信息,進(jìn)而實(shí)現(xiàn)利用GPS進(jìn)行導(dǎo)航和定位的目的。

GPS定位導(dǎo)航數(shù)據(jù)格式常采用NEMA0183格式,數(shù)據(jù)內(nèi)容較少,因此多用RS-232串口將定位信息從GPS接收機(jī)傳送到數(shù)據(jù)處理模塊中進(jìn)行信息提取處理。GPS定位導(dǎo)航數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成。根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有"$GPGGA"、"$GPGSA"、"$ GPGSV"以及"$GPRMC"等。在智能導(dǎo)游系統(tǒng)中,定位數(shù)據(jù)主要有經(jīng)緯度、海拔高度等。這些數(shù)據(jù)可以從"$GPGGA"幀中獲取得到,該幀的結(jié)構(gòu)及各字段標(biāo)記如下: $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh

本方法所需要的數(shù)據(jù)是"$GPGGA"的<2>、<4>、<9>。<2>、<4>是定位的基本數(shù)據(jù)。<9>是相對于海平面的高度,當(dāng)景區(qū)是非平坦的地域時(shí),它可以標(biāo)識游客所處位置相對于海平面的高度。

步驟2:GPS定位導(dǎo)航數(shù)據(jù)的接收:通過RS-232串口將定位信息從GPS接收機(jī)獲取,包括經(jīng)緯度、海拔高度;

步驟2-1:串口初始化操作;

由于GPS定位信息內(nèi)容較少,因此多用RS-232串口將定位信(NEMA0183語句)從GPS接收機(jī)傳送到計(jì)算機(jī)中進(jìn)行信息提取處理。從串口讀取數(shù)據(jù)有多種方法,比如直接使用 Win32 API函數(shù)對其進(jìn)行編程處理。在Windows下不允許直接對硬件端口進(jìn)行控制操作,所有的端口均被視為"文件",因此在對串口進(jìn)行偵聽之前需要通過打開文件來打開串口,并對其進(jìn)行相關(guān)參數(shù)配置。串口設(shè)置一般為:1 bit開始位,8 bit數(shù)據(jù)位,1 bit結(jié)束位,沒有奇偶校驗(yàn),波特率參考設(shè)備說明書。

步驟2-1-1:使用Win32 API函數(shù)CreateFile打開串口;

使用Win32 API函數(shù)CreateFile打開串口。與其他對象一樣,通信端口也是用句柄來標(biāo)識的。CreateFile函數(shù)返回被操作的通信端口句柄,如果串口被成功打開時(shí),則返回其句柄,否則返回INVALID_HANDLE_ VALUE。

步驟2-1-2:進(jìn)行串口配置;

當(dāng)調(diào)用CreateFile成功打開串口之后,接下來就要進(jìn)行串口配置了。函數(shù)GetCommState和SetCommState可用于檢索和設(shè)定端口設(shè)置的DCB(設(shè)備控制塊)結(jié)構(gòu)。該結(jié)構(gòu)中BaudRate、ByteSize、StopBits和Parity為串口波特率、數(shù)據(jù)位數(shù)、停止位和奇偶校驗(yàn)控制等信息??上扔肎etCommState檢索端口的當(dāng)前設(shè)置修改其中的部分字段,然后再用函數(shù)SetCommState進(jìn)行端口設(shè)定。

步驟2-1-3:進(jìn)行超時(shí)參數(shù)的設(shè)置;

成功設(shè)置完端口參數(shù)后,就要進(jìn)行超時(shí)參數(shù)的設(shè)置。通過GetCommTime-outs函數(shù)得到系統(tǒng)默認(rèn)的超時(shí)參數(shù),進(jìn)行適當(dāng)配置,然后用SetCommTime-outs函數(shù)進(jìn)行重設(shè)超時(shí)參數(shù)。

步驟2-1-4:進(jìn)行串口緩沖區(qū)的設(shè)置。

串口初始化,還要進(jìn)行串口緩沖區(qū)的設(shè)置。調(diào)用SetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue)函數(shù),其中第一個(gè)參數(shù)是打開串口的句柄,第二個(gè)參數(shù)是輸入緩沖區(qū)大小,第三個(gè)是輸出緩沖區(qū)大小。

步驟2-2:GPS定位導(dǎo)航數(shù)據(jù)的接收:采用輪詢串口方式或事件觸發(fā)方式對GPS定位信息進(jìn)行接收;

在成功打開并設(shè)置串口后,可采用輪詢串口方式或事件觸發(fā)方式對GPS數(shù)據(jù)進(jìn)行接收處理。采用事件觸發(fā)方式效率比較高,調(diào)用SetCommMask函數(shù)設(shè)置串口事件。本實(shí)施方式設(shè)為EV_RXCHAR事件觸發(fā)方式,當(dāng)串口有字符到達(dá)時(shí)就會(huì)啟動(dòng)ReadFile函數(shù)完成對GPS定位信息的接收。ReadFile函數(shù)負(fù)責(zé)將串口緩沖區(qū)中的數(shù)據(jù)讀到緩存。

經(jīng)過多次實(shí)驗(yàn)統(tǒng)計(jì),發(fā)現(xiàn)在處理接收GPS定位數(shù)據(jù)時(shí)有一種更合適的方法:將緩沖區(qū)lpBuffer的大小和讀到緩沖區(qū)的字節(jié)數(shù)目設(shè)為相同的固定值。這個(gè)值的大小影響直接影響了內(nèi)存的占用率,間接影響了提取定位數(shù)據(jù)的命中率。

當(dāng)程序剛開始運(yùn)行時(shí),由于GPS模塊正在初始化,還不會(huì)有數(shù)據(jù)發(fā)送到串口上,所以當(dāng)采用后新方法時(shí),到緩沖區(qū)讀數(shù)據(jù)會(huì)讀不到結(jié)果;當(dāng)采用普通方法時(shí),COMSTAT的屬性cbInQue值為0,所以在緩沖區(qū)中不會(huì)讀空。隨著時(shí)間增加,GPS設(shè)備已經(jīng)完全初始化,采用新方法就幾乎不會(huì)出現(xiàn)到緩沖區(qū)中讀空的現(xiàn)象;由于硬件設(shè)備或一些不可預(yù)測的原因,會(huì)導(dǎo)致出錯(cuò)率增加,但是只能增加到某個(gè)值。

如果將第二個(gè)參數(shù)lpBuffer緩沖區(qū)設(shè)得足夠大,將會(huì)提高提取定位數(shù)據(jù)的命中率,使得每次總能在緩沖區(qū)中尋找到所需定位數(shù)據(jù),但是這同樣會(huì)浪費(fèi)內(nèi)存。如果將lpBuffer緩沖區(qū)設(shè)得非常小,雖然節(jié)省了內(nèi)存,但是卻降低了提取定位數(shù)據(jù)的命中率,使得每次在緩沖區(qū)中找不到所需定位數(shù)據(jù)的概率大大增加。圖1說明了緩沖區(qū)大小影響提取定位數(shù)據(jù)命中率的情況,Y軸綜合考慮提取定位數(shù)據(jù)的命中率和內(nèi)存占用率,X軸代表lpBuffer緩沖區(qū)的大小。通過我們多次實(shí)驗(yàn)統(tǒng)計(jì),得出當(dāng)緩沖區(qū)的大小越接近482字節(jié)時(shí),提取定位數(shù)據(jù)的命中率越高。但是考慮到計(jì)算機(jī)的二進(jìn)制特性,所以將緩沖區(qū)的大小設(shè)為512字節(jié)。

步驟3:GPS定位導(dǎo)航數(shù)據(jù)的處理;

從串口接收到的數(shù)據(jù)并將被放置于緩存, 在沒有進(jìn)一步處理之前緩存中是一長串字節(jié)流, 這些信息在沒有經(jīng)過分類提取之前是無法加以利用的。因此, 必須通過將各個(gè)字段的信息從緩存字節(jié)流中提取出來,將其轉(zhuǎn)化成有實(shí)際意義的, 可供高層決策使用的定位信息數(shù)據(jù)。 本方法所需要的經(jīng)緯度、海拔高度信息可以從“$GPGGA”結(jié)構(gòu)幀中獲得??紤]到“$GPGGA”結(jié)構(gòu)幀中,海拔高度之前的數(shù)據(jù)格式長度是固定的,本文提出一種新的提取經(jīng)緯度和海拔高度的方法。這種提取方法效率比較高并且簡潔。

步驟3-1:從串口接收到的數(shù)據(jù)并將被放置于緩存;

步驟3-2:開辟一個(gè)緩沖區(qū),調(diào)用ReadFile函數(shù)將串口緩存中的GPS定位導(dǎo)航數(shù)據(jù)讀到該緩沖區(qū)中;

步驟3-3:對所述緩沖區(qū)中的數(shù)據(jù)進(jìn)行處理:調(diào)用strstr函數(shù)在緩沖區(qū)中尋找數(shù)據(jù)幀的位置:如果找到,則返回?cái)?shù)據(jù)幀的首地址,并賦給字符串指針變量dwFind-Address;如果沒找到,則返回0。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1