基于ARM9與WindowsCE的車(chē)輛GPS定位信息采集系統(tǒng)
數(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)到開(kāi)始狀態(tài)。若校驗(yàn)失敗,則放棄處理的數(shù)據(jù),直接跳轉(zhuǎn)至開(kāi)始狀態(tài)。
3.2 完整GPS數(shù)據(jù)幀的截取
了解了GPS數(shù)據(jù)處理的四個(gè)狀態(tài)之間的相互轉(zhuǎn)換,下面論述一個(gè)完整的GPS數(shù)據(jù)幀的提取和處理,它是獲取車(chē)輛GPS定位數(shù)據(jù)的關(guān)鍵。一個(gè)完整的GPS數(shù)據(jù)幀的提取流程如圖4所示。本文引用地址:http://2s4d.com/article/151616.htm
圖4中,m_strRecDisp為一個(gè)CString變量,用于表示接收數(shù)據(jù)的字符串,該程序流程中,用到兩個(gè)最重要的函數(shù)即:字符(串)查找函數(shù)和字符串截取函數(shù)。
1)字符(串)查找函數(shù) 該函數(shù)CString∷Find()用于從一個(gè)已有的字符串當(dāng)中查找與目標(biāo)字符(串)相匹配的首次出現(xiàn)的一個(gè)單字符或一個(gè)子字符串。一個(gè)重要的函數(shù)原型為:int Find(TCHAR ch,int nStart)const:其中,ch為要查找的目標(biāo)字符,nStart為開(kāi)始查找位置。
2)字符串截取函數(shù) 該函數(shù)CString∷Mid()用于截取一個(gè)字符,也可從一個(gè)具體位置開(kāi)始截取一個(gè)子字符串,返回值即為字符或字符串常量。函數(shù)原型為:Mid(int nFirst,intnCount)const;其中nFirst為字符串開(kāi)始截取的位置,nCount為截取字符數(shù)目。
3.3 GPS數(shù)據(jù)幀的處理
截取出一個(gè)完整的數(shù)據(jù)幀后,將數(shù)據(jù)幀賦值給CString變量data,data再將其字符內(nèi)容淵源不斷的送給緩沖pBuffer,解壓縮數(shù)據(jù)幀后,進(jìn)入到如圖5所示的GPS數(shù)據(jù)幀處理流程。在處理GPS時(shí)間數(shù)據(jù)時(shí),因?yàn)楸本┪挥跂|八區(qū),UTC時(shí)間與北京時(shí)間相差8 h,得到UTC時(shí)間后,如果要得到標(biāo)準(zhǔn)的北京時(shí)間,應(yīng)在此時(shí)間的基礎(chǔ)上,加上8 h。
3.4 二維衛(wèi)星視圖的獲取
衛(wèi)星視圖的獲取首先要用到站心切平面坐標(biāo)系。坐標(biāo)系如圖6所示,站心切平面以P點(diǎn)的法線為Z軸且向上為正,X軸垂直于Z軸并指向北極.Y軸垂直于Z軸并向東為正。
評(píng)論