基于ARM9與WinCE的車輛GPS定位信息采集系統(tǒng)
3 GPS定位信息采集和處理的軟件實(shí)現(xiàn)
本系統(tǒng)的軟件開發(fā)在可視化開發(fā)工具Embedded VisualC++(簡稱EVC)中,采用MFC編程技術(shù)實(shí)現(xiàn)。
3.1 GPS數(shù)據(jù)處理狀態(tài)轉(zhuǎn)換
GPS與ARM之間用RS232串口方式進(jìn)行通信,串口對象負(fù)責(zé)接收數(shù)據(jù),并把接收到的數(shù)據(jù)放置到串口緩沖區(qū)。GPS對象按照協(xié)議結(jié)構(gòu)負(fù)責(zé)處理串口對象接收到的數(shù)據(jù)。圖3為GPS數(shù)據(jù)處理之間的狀態(tài)轉(zhuǎn)換示意圖。GPS數(shù)據(jù)處理狀態(tài)共包括4個(gè)狀態(tài):開始狀態(tài)、數(shù)據(jù)幀頭狀態(tài)、GPS數(shù)據(jù)正文狀態(tài)和校驗(yàn)狀態(tài)。
開始狀態(tài)是一個(gè)數(shù)據(jù)幀的起始狀態(tài),它處理和判斷數(shù)據(jù)幀的起始字符$。若起始符號不是其中的$,則一直停留在開始狀態(tài),直到$到來位置,數(shù)據(jù)幀頭狀態(tài)用于判斷數(shù)據(jù)幀的格式是否與我們目前需要的目標(biāo)數(shù)據(jù)幀相匹配。如果相匹配,那么將退轉(zhuǎn)到下一個(gè)狀態(tài):GPS數(shù)據(jù)正文狀態(tài),開始進(jìn)行數(shù)據(jù)處理。如果不匹配,則轉(zhuǎn)移到開始狀態(tài)。
數(shù)據(jù)處理中用到了緩沖區(qū)的概念,它一邊累積計(jì)算接收的數(shù)據(jù)的異或和,一邊把相應(yīng)的數(shù)據(jù)域送入緩沖區(qū)。這樣既降低了數(shù)據(jù)提取校驗(yàn)的復(fù)雜度,也提高了數(shù)據(jù)處理的延續(xù)性和正確性。當(dāng)GPS數(shù)據(jù)正文狀態(tài)完成,進(jìn)入“*”字符的時(shí)候,將進(jìn)入數(shù)據(jù)校驗(yàn)狀態(tài),它用于判斷數(shù)據(jù)接收和處理的有效與否。若校驗(yàn)成功,則接收有效,收到CR,LF字符后又重新跳轉(zhuǎn)到開始狀態(tài)。若校驗(yàn)失敗,則放棄處理的數(shù)據(jù),直接跳轉(zhuǎn)至開始狀態(tài)。
3.2 完整GPS數(shù)據(jù)幀的截取
了解了GPS數(shù)據(jù)處理的四個(gè)狀態(tài)之間的相互轉(zhuǎn)換,下面論述一個(gè)完整的GPS數(shù)據(jù)幀的提取和處理,它是獲取車輛GPS定位數(shù)據(jù)的關(guān)鍵。一個(gè)完整的GPS數(shù)據(jù)幀的提取流程如圖4所示。
評論