基于A(yíng)RM和WINCE的便攜式差分GPS導航定位系統設計及
2.2 設置HC12參數
本文引用地址:http://dyxdggzs.com/article/201610/305935.htm通過(guò)串口建立差分GPS模塊與ARM或PC機的連接,借助NMEA0183指令,通過(guò)任意一串口均可以設置HC12??捎瞄_(kāi)發(fā)軟件串口通信區“發(fā)送”命令按鈕或串口助手軟件(WINCE或WINXP均可)進(jìn)行通信,首先設置接收機應用模式為SBAS,再設置串口通信波特率、串口輸出的NMEA語(yǔ)句及輸出速率,最后設置最大差分齡期和衛星仰角。
差分GPS模塊串行通訊參數為:波特率=19200,數據位=8位,停止位=1位,無(wú)奇偶校驗。通過(guò)串口建立ARM和GPS的連接,GPS加電后便自動(dòng)搜索衛星,并通過(guò)串口以每秒1次的頻率向ARM發(fā)送GPRMC格式的定位信息,在定位信息有效后ARM便可以提取所需要的定位信息。
2.3 讀取串口
獲取GPS導航數據實(shí)際上就是通過(guò)串口讀取HC12輸出的NMEA格式數據的過(guò)程,下面介紹WINCE下讀取串口程序的開(kāi)發(fā)過(guò)程。
2.3.1 打開(kāi)串口
點(diǎn)擊“打開(kāi)”按鈕,進(jìn)入此按鈕的消息響應函數,函數中執行打開(kāi)串口和串口參數配置等操作。首先調用CreateFile()函數打開(kāi)指定的端口,接著(zhù)對串口進(jìn)行參數配置,包括波特率、數據位、停止位、奇偶校驗等。參數設置過(guò)程為:先調用GetCommState()獲取串口的當前配置,得到結構體DCB(Device Control Block,設備控制塊)的指針,通過(guò)它給DCB結構體賦值,然后傳給SetCommState()函數對串口進(jìn)行配置。
最后設置串口的超時(shí)參數,設置方法與上述參數設置類(lèi)似,先通過(guò)GetCommTimeouts()得到一個(gè)結構體指針,賦值后傳給Set Comm Time outs()進(jìn)行設置。
2.3.2 接收數據
串口打開(kāi)后,自動(dòng)開(kāi)始接收,函數中調用了CreateThread()開(kāi)辟了一個(gè)線(xiàn)程,用于接收串口數據。由于接受過(guò)程需要調用WaitCommEven()函數來(lái)不停地等待數據到來(lái)事件,會(huì )致使程序無(wú)法響應其他操作,因此采用開(kāi)辟線(xiàn)程的辦法來(lái)防止信息擁堵。

圖4所示為接收串口數據的線(xiàn)程中執行的操作流程。程序實(shí)現了串口數據的接收,并把接收到的數據傳遞給Dig類(lèi),用于后期進(jìn)行定位信息提取及顯示等操作。
2.4 提取定位數據
NMEA-0183通信標準的輸出數據采用的是ASCⅡ碼,主要有GGA、GLL、GSA、GSV、RMC、VCT等不同的結構,每種類(lèi)型的幀均是以“$”開(kāi)頭,然后是兩個(gè)字母的“識別符”和3個(gè)字母的“語(yǔ)句名”組成ID信息頭,接著(zhù)就是以逗號分割的數據體,末尾為校驗和,以回車(chē)換行符結束。本設計只關(guān)心日期、時(shí)間、經(jīng)緯度、地面速度等,選用GPRMC語(yǔ)句,表1中對該語(yǔ)句結構作了詳細說(shuō)明,按圖5所示的流程即可完成GPS數據的提取。注意在編寫(xiě)程序中不要出現m_strRecv[i+k](k>0)這樣的表達式,例如以(m_strDataReceived[i]==‘$’m_strDataReceived[i+3]==‘R’)為判斷條件來(lái)提取ID頭,容易造成超出數組元素個(gè)數的錯誤。


3 系統實(shí)驗及精度分析
實(shí)驗地點(diǎn)選在運動(dòng)場(chǎng)場(chǎng)開(kāi)闊處,先采用靜態(tài)內符合法進(jìn)行精度測試。連接差分GPS天線(xiàn),給系統上電,運行開(kāi)發(fā)軟件,設置好串口參數,打開(kāi)串口COM2,待差分GPS模塊進(jìn)入穩定差分定位后開(kāi)始保存數據,采集數據約3 000組,用MATLAB處理采集數據,結果如圖6所示。

導航定位等功能測試:手持該系統進(jìn)行直線(xiàn)和圓形運動(dòng),觀(guān)察海圖區域航跡向軌跡形狀;設定1個(gè)目標點(diǎn),畫(huà)半徑為200米的圓并設置航線(xiàn),分別按直線(xiàn)和曲線(xiàn)前進(jìn),觀(guān)察距離、偏離、方位等參數變化;對海圖進(jìn)行放大、縮小和平移,分別點(diǎn)選本艦居中和目標居中,觀(guān)察海圖顯示變化。
測試表明,終端軟件能平穩地運行在嵌入式WINCE5.0系統上,操作界面簡(jiǎn)潔、直觀(guān)、實(shí)用、功能全面,具有良好的實(shí)時(shí)性和準確性,系統定位精度(2DRMS)優(yōu)于1 m。
4 結束語(yǔ)
文中基于A(yíng)RM硬件平臺,以WINCE為嵌入式操作系統,在Visual Studio2008下開(kāi)發(fā)了串口通信導航數據軟件,通過(guò)串行接口實(shí)現差分GPS模塊與ARM之間的通信,構建了一個(gè)體積小、功耗低、功能全面的便攜式差分GPS導航定位系統,并給出了詳細的硬件和軟件設計實(shí)現。實(shí)驗表明:該系統能實(shí)時(shí)顯示精度較高、持久有效的GPS定位數據,具有重要的實(shí)用價(jià)值和一定的參考意義。
評論