基于Windows CE平臺(tái)的GPS移動(dòng)設(shè)備設(shè)計(jì)
2 整體設(shè)計(jì)
設(shè)計(jì)主要依照GPS數(shù)據(jù)信號(hào)的流向來(lái)進(jìn)行。GPS數(shù)據(jù)信號(hào)通過(guò)串口讀入到開(kāi)發(fā)板主程序,然后經(jīng)過(guò)對(duì)數(shù)據(jù)信號(hào)進(jìn)行解碼獲得當(dāng)前位置的經(jīng)緯度信息,再在經(jīng)緯度數(shù)據(jù)庫(kù)中查詢獲得當(dāng)前位置的地名,整個(gè)過(guò)程由觸摸屏進(jìn)行顯示,并通過(guò)觸摸屏完成人機(jī)交互。
2.1 串口驅(qū)動(dòng)
Microsoft eMbedded Tools封裝了Windows API函數(shù),便于Windows CE應(yīng)用程序的開(kāi)發(fā)。在Windows CE中,所有的設(shè)備都被看成是文件。串口通信可以像訪問(wèn)普通文件那樣通過(guò)API通信函數(shù)來(lái)實(shí)現(xiàn),系統(tǒng)的虛擬驅(qū)動(dòng)程序負(fù)責(zé)執(zhí)行特定的工作。在Windows CE下串行端口被視為用于打開(kāi)、關(guān)閉、讀寫(xiě)串行端口的常規(guī)可安裝的流設(shè)備,是串行設(shè)備接口的常規(guī)I/O驅(qū)動(dòng)程序調(diào)用和與通信相關(guān)的具體函數(shù)的結(jié)合。Windows CE的通信函數(shù)和其它大多數(shù)Windows的通信函數(shù)相似,值得注意的是,Windows CE不支持直接對(duì)串行端口的寄存器進(jìn)行編程。
2.1.1 打開(kāi)和關(guān)閉串口
CreateFile函數(shù)用于打開(kāi)串行口。m_hDSComm=CreateFile(_T(COM2:)),GENER2IC_READ|GENER IC_WR ITE,0,NULL,OPEN_EXISTIN-G,0,NULL)。注意COM2后面要有一個(gè)冒號(hào)。第三個(gè)參數(shù)dwShareMode也必須為O,通信端口不能像文件一樣被共享。最后一個(gè)參數(shù)dwFlagsAnd-Attributes必須為0,因?yàn)閃indows CE只支持非重疊I/O。這個(gè)函數(shù)的返回值是已打開(kāi)的串行端口的句柄或者是INVALLD_HANDLE_VALUE。關(guān)閉串口可以調(diào)用CloseHandle(m_hDSComm)。
2.1.2 串口參數(shù)設(shè)置
串口設(shè)置主要是用DCB構(gòu)配置端口設(shè)置,包括波特率、停止位、數(shù)據(jù)位長(zhǎng)度、校驗(yàn)位、流量控制和超時(shí)值等等。首先打開(kāi)串行端口,用GetCommState函數(shù)獲得當(dāng)前打開(kāi)的串口配置,然后根據(jù)需要修改DCB成員,最后用SetCommState函數(shù)設(shè)置新的串口配置。
2.1.3 設(shè)置緩沖區(qū)大小和超時(shí)
對(duì)串口來(lái)說(shuō),必須設(shè)置超時(shí)值,否則程序可能陷入到一個(gè)循環(huán)來(lái)等待來(lái)自串口的字符。這對(duì)采用WindowsCE的設(shè)備來(lái)說(shuō),將大大減少設(shè)備電池的使用時(shí)間,所以超時(shí)值是必須配置的。另外一種解決辦法就是采用多線程。通常,配置超時(shí)值和配置串口類似。首先用GetCommTi-meouts函數(shù)獲得當(dāng)前串口的超時(shí)值,然后修改COM2MTIMEOUTS成員,最后用SetCommTimeouts函數(shù)設(shè)定超時(shí)值。
2.1.4 讀寫(xiě)串口
利用ReadFile和WriteFile函數(shù)讀寫(xiě)串口。需要注意的是Windows CE不支持重疊I/O,所以如果在主線程進(jìn)行大量讀寫(xiě)串口操作時(shí),有可能使整個(gè)程序陷入緩慢的串口等待中去,因此一般都采用多線程來(lái)進(jìn)行讀寫(xiě)串口操作。
2.2 GPS數(shù)據(jù)處理
GPS數(shù)據(jù)處理模塊的設(shè)計(jì)方案如圖1所示。GPS接收模塊通過(guò)串口2將定位數(shù)據(jù)(NMEA0183 Ver2.0)傳給開(kāi)發(fā)板,然后應(yīng)用程序?qū)?shù)據(jù)進(jìn)行處理。在VS2005中,直接利用串口通信方法將定位數(shù)據(jù)讀入,接著進(jìn)行定位數(shù)據(jù)的分類,并提取出所需要的信息,同時(shí)將這些有用的信息傳給主應(yīng)用程序,主應(yīng)用程序再將GPS接收模塊的控制信息整理成NEMA0183 VER2.0語(yǔ)句。
圖1 GPS數(shù)據(jù)處理模塊設(shè)計(jì)方案示意圖
評(píng)論