基于Windows CE的物流車載終端設(shè)計_第1頁
基于Windows CE的物流車載終端設(shè)計_第2頁
基于Windows CE的物流車載終端設(shè)計_第3頁
基于Windows CE的物流車載終端設(shè)計_第4頁
基于Windows CE的物流車載終端設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于Windows CE的物流車載終端設(shè)計    摘要 提出一種基于Windows CE嵌入式操作系統(tǒng)的物流車載終端設(shè)計方案。在此方案中集成了電子地圖、GPS定位、GPRS無線通信、熱敏打印機(jī)、電子秤等功能。文中給出了相應(yīng)的實現(xiàn)及測試結(jié)果。關(guān)鍵詞 物流 車載終端 電子地圖 GPS定位GPRS通信Windows CE     物流在現(xiàn)代社會中正扮演著越來越重要的角色。但是,與國外技術(shù)密集型的物流行業(yè)相比,國內(nèi)物流行業(yè)在信息化、智能化程度上還存在著較大差距。鑒于這樣一種狀況,本文提出了一個基于WindowsCE平臺的物流車載終端

2、設(shè)計方案。該物流車載終端以Liod評估板(簡稱為“Liod板”)為硬件平臺,在嵌入式操作系統(tǒng)Windows CE上實現(xiàn)的功能有:電子地圖,實現(xiàn)地圖4級縮放、平移、歸中功能;無線通信,實現(xiàn)終端與控制中心的GPRS無線通信;GPS定位,定位車載終端當(dāng)前的位置;稱重與打印,讀取電子秤數(shù)據(jù),實現(xiàn)票據(jù)的打??;語音提示,提供更好的人機(jī)交互功能。1 軟硬件平臺簡介    本車載終端以Liod板為硬件平臺。Liod板的核心PXA270是一款屬于Intel XScale微架構(gòu)的高性能、低功耗嵌入式處理器。在本設(shè)計中要用到的主要有LCD、觸摸屏、以太網(wǎng)接口、全功能串口、音頻接口等。本

3、設(shè)計方案采用WindowsCE作為軟件平臺。WindowsCE是一種針對小容量、移動式、智能化設(shè)備的多任務(wù)、搶占式、模塊化實時嵌入式操作系統(tǒng)。Windows CE具有與桌面Windows幾乎完全兼容的API接口,為了配合WindowsCE上的應(yīng)用程序開發(fā),微軟公司推出了eMbedded Visual C+(簡稱 “eVC”)集成開發(fā)環(huán)境。本系統(tǒng)采用的是eVC 4O。2 硬件設(shè)計2.1 系統(tǒng)硬件設(shè)計    在Liod板的基礎(chǔ)上擴(kuò)充了部分外圍電路。根據(jù)Liod板提供的硬件資源和系統(tǒng)需要使用的硬件情況,硬件設(shè)計主要包括兩個部分:以太網(wǎng)口轉(zhuǎn)串口電路設(shè)計和電子秤硬件電路設(shè)計

4、。    無線通信設(shè)備采用GPRS Modem。該GPRS Modem通過Liod板的串行口COMl發(fā)送和接收數(shù)據(jù);GPS定位采用12通道定位模塊GARMIN-15L;打印機(jī)采用TD58熱敏打印機(jī);電子秤采用應(yīng)變片壓力傳感器結(jié)合C805lF020單片機(jī)自行開發(fā);語音提示模塊直接使用Liod板提供的音頻接口。由于GPS接收模塊、熱敏打印機(jī)、電子秤都要通過串行口與Liod板通信,Liod板原有的串口數(shù)量已經(jīng)無法滿足要求,因此采用ZNE-100T以太網(wǎng)轉(zhuǎn)串口模塊,把Liod板的以太網(wǎng)口擴(kuò)充成3個串行口。系統(tǒng)的硬件連接如圖1所示。2.2 以太網(wǎng)口轉(zhuǎn)串口電路 &#

5、160;  該電路的核心轉(zhuǎn)換部分采用ZNE-100T網(wǎng)絡(luò)模塊。經(jīng)過該電路的轉(zhuǎn)換,對串口的操作跌射為通過以太網(wǎng)進(jìn)行的數(shù)據(jù)發(fā)送和接收。ZNE-100T模塊引腳定義如表l所到。    上述引腳中,GPIO0GPIO4是可控制通用IO口。在功能板的設(shè)計中,使用了3個RS232串口分別發(fā)送和接收電子秤數(shù)據(jù)、打印機(jī)數(shù)據(jù)和GPS數(shù)據(jù)。本系統(tǒng)采用帶有使能控制信號的MAX322l電平轉(zhuǎn)換芯片選擇要使用的串口,具體做法是將GPIO0GPIO2分別連接到3個MAX322l的使能端(EN),這樣就可以通過軟件來選擇需要的串口。使能端均為低電平有效,當(dāng)有一個串口的使能端為O時,其

6、他兩個串口使能端必須為l。23 電子秤硬件設(shè)計    電子秤使用應(yīng)變片壓力傳感器、AD822l運算放大器和C8051F320芯片進(jìn)行設(shè)計。電子秤硬件電路框圖如圖2所示。    物品重量通過應(yīng)變片壓力傳感器轉(zhuǎn)換成比較微弱的電壓信號。此電壓信號經(jīng)過AD822l運算放大器放大,送到C805lF020的ADC1轉(zhuǎn)換器;轉(zhuǎn)換后的數(shù)據(jù)通過串口發(fā)送出去,同時在擴(kuò)展板的液晶顯示屏上顯示重量。電子秤的UART0和PC串口都使用9600 bps的波特率。    C8051F020的ADCl轉(zhuǎn)換器是8位的,因此轉(zhuǎn)換數(shù)據(jù)是025

7、5。電子秤的分辨率為20g,最大稱量量程是51 kg。3 軟件設(shè)計3.1 電子地圖    電子地圖模塊采用柵格圖像實現(xiàn)。柵格圖像又稱“位圖”,由像素點組成。與矢量圖像不同,柵格圖像在用作電子地圖時需要在地圖元素和數(shù)據(jù)之間建立對應(yīng)關(guān)系。    首先對坐標(biāo)系統(tǒng)進(jìn)行簡單的說明。假設(shè)有一個形狀為嚴(yán)格矩形的地圖,其像素坐標(biāo)原點為(O,0),地圖X軸方向上的寬度假設(shè)為W個像素點,Y軸方向的高度假設(shè)為H個像素點,某個點的像素坐標(biāo)為(x,y),則定義該像素點的歸一化坐標(biāo)為(xW,yH)。這樣,地圖左上角的歸一化坐標(biāo)為(00,OO),右下角歸一化坐標(biāo)為

8、(10,1O。把這樣的坐標(biāo)系統(tǒng)稱為“歸一化坐標(biāo)系”。    采用歸一化坐標(biāo)系可以簡化柵格地圖的多級縮放。由于本終端要將車輛當(dāng)前的位置顯示在地圖上,而對于不同的地圖級別,地圖的分辨率是不一樣的。那么,當(dāng)?shù)貓D放大或縮小時,車輛對應(yīng)的像素坐標(biāo)就會發(fā)生改變;但是,在GPS連續(xù)的兩次更新間隔之間,車輛在地圖上的歸一化坐標(biāo)是不會變化的。地圖放大或縮小后,只需要用新地圖的像素寬度乘以歸一化x坐標(biāo),即可得到車輛在新地圖上的X軸像素坐標(biāo);同理,可得車輛在新地圖上的Y軸像素坐標(biāo)。這樣,坐標(biāo)計算過程就可以統(tǒng)一起來。本設(shè)計中的電子地圖模塊統(tǒng)一采用歸一化坐標(biāo)系。  &#

9、160; 根據(jù)設(shè)計要求,本終端的電子地圖支持4級縮放。設(shè)計中采用一幅大小為225l×1557、格式為BMP的成都地圖作為原始地圖,即所能支持的最大分辨率的地圖。把縮小8倍以后的地圖作為所能支持的最小分辨率地圖,因此地圖級別與放大倍數(shù)之間具有如表2所列的對應(yīng)關(guān)系。    程序啟動時將所有位圖文件載入內(nèi)存,以加快響應(yīng)速度。此后,當(dāng)執(zhí)行放大或縮小地圖的操作時,則將相應(yīng)的位圖顯示在屏幕上;同時,根據(jù)新的位圖大小和車輛的歸一化坐標(biāo)計算出車輛在地圖的像素位置,并將車輛位置在地圖上顯示出來。    就車載終端而言,所覆蓋的地理范圍相對地球

10、半徑來說幾乎無窮小,故可以認(rèn)為該電子地圖所對應(yīng)的經(jīng)緯度坐標(biāo)是線性變化的,即地圖坐標(biāo)和GPS坐標(biāo)之間近似為線性映射關(guān)系。此線性映射關(guān)系的原理如圖3所示。    由于GPS得到的是當(dāng)前車輛的經(jīng)緯度坐標(biāo),而電子地圖模塊使用的是歸一化坐標(biāo)系,因此需要在兩種坐標(biāo)之間進(jìn)行轉(zhuǎn)換。此轉(zhuǎn)換過程是依靠地圖左上角點和右下角點這兩個基準(zhǔn)點來實現(xiàn)的,因此首先需要求得地圖左上角和右下角的經(jīng)緯度坐標(biāo)。有了這兩個數(shù)據(jù)以后,當(dāng)從GPS硬件模塊讀取到經(jīng)緯度坐標(biāo)時,根據(jù)近似的線性映射關(guān)系,就可計算出該坐標(biāo)在地圖上的歸一化坐標(biāo),由此可得相應(yīng)的像素點坐標(biāo),即可將車輛位置顯示出來。  &

11、#160; 對于地圖左上角點和右下角點的經(jīng)緯度坐標(biāo)的求取,通過實際測量的方法是很難做到準(zhǔn)確無誤的。因此本設(shè)計采用一種間接的方法來求得地圖左上角和右下角的經(jīng)緯度坐標(biāo)。    假設(shè)在地圖邊界內(nèi)部有兩個任意點,把這兩個點稱為“參考點”,并且已知這兩個參考點的經(jīng)度、緯度、歸一化x坐標(biāo)、歸一化,坐標(biāo);設(shè)參考點1的這4個參數(shù)為point1=(lon1,latl,x1,y1),參考點2的這4個參數(shù)為point2=(lon2,lat2,x2,y2),即pointl和point2已知。根據(jù)前面的說明可知,左上角點的歸一化坐標(biāo)為(OO,O0),而右下角點的歸一化坐標(biāo)為(10,10)。

12、另外假設(shè)左上角點用pomtTL表示,其經(jīng)緯度為lonTL和latTL;右下角點用pointBR表示,其經(jīng)緯度為lonBR和1atBR(TL意即TopLeft,BR意即BottomRight),則有pomtTL=(lonTL,latTL,0,0,0O)。同理,對于右下角的點有pointBR=(lonBR,latBR,1O,1O)。    由于將經(jīng)緯度與地圖坐標(biāo)之間近似為線性映射關(guān)系,因此根據(jù)歐氏幾何原理可知,由已知的pointl和point2,可以計算出pointTL和pointBR的未知參數(shù):    可見,要得到地圖左上角和右下角的經(jīng)

13、緯度坐標(biāo),只需要知道2個參考點的4個參數(shù)就可以了。在本系統(tǒng)中,實地采集了3個參考點,得到的數(shù)據(jù)如表3所列。    根據(jù)式(1)和式(2),上面的3個參考點之間兩兩結(jié)合可以求出一組左上角和右下角的經(jīng)緯度,總共可以有3種組合方案,也就是可以求得3組經(jīng)緯度值。然后,對這三組經(jīng)緯度取平均,以減小誤差,提高精度。    上述過程是在GPS數(shù)據(jù)處理模塊初始化過程中完成的。為了提高系統(tǒng)的靈活性和可靠性,參考點數(shù)據(jù)都是存放在外部數(shù)據(jù)文件中的,因此,需要在程序啟動時將相應(yīng)的數(shù)據(jù)讀入到內(nèi)存中。為此,專門為參考點定義了一個數(shù)據(jù)結(jié)構(gòu)  &

14、#160; 本設(shè)計定義了用于存儲參考點信息的數(shù)據(jù)文件的格式,如表4所列。    上述工作完成之后,參考點數(shù)據(jù)的存儲和讀取就比較簡單了。基準(zhǔn)點和車輛位置的計算都只是簡單的代數(shù)計算過程,容易實現(xiàn)。至于地圖的顯示和控制則需要通過Windows CE的API接口來完成。3.2 GPRS模塊    本車載終端采用GPRS Modem與控制中心進(jìn)行無線數(shù)據(jù)通信,對GPRS Modem的控制和讀寫通過串口進(jìn)行。由于與控制中心交互的數(shù)據(jù)種類較多,因此定義了相應(yīng)的應(yīng)用層數(shù)據(jù)包格式。數(shù)據(jù)包的所有字段均采用單字節(jié)ASCII編碼且為固定長度。在發(fā)送端,數(shù)值型

15、字段需要在發(fā)送前格式化為定長字符串再封裝到數(shù)據(jù)包中;在接收端,需要將數(shù)據(jù)包中的格式化字符串還原為數(shù)值型常量。數(shù)值型字段不足部分以字符“O”為前導(dǎo)字符進(jìn)行填充;字符型字段不足部分以空格(SPACE,0x20)為前導(dǎo)字符填充。字符串型字段的長度不包括字符串結(jié)尾的NULL字符(在C語言中為0x00)。所有采用UNICODE編碼的字符數(shù)據(jù)在封裝到數(shù)據(jù)包中之前必須進(jìn)行轉(zhuǎn)換。    定義的數(shù)據(jù)包主要有以下幾類:客戶端位置更新數(shù)據(jù)包;客戶端接件信息數(shù)據(jù)包;客戶端送達(dá)簽收數(shù)據(jù)包;服務(wù)器新任務(wù)數(shù)據(jù)包;客戶端確認(rèn)數(shù)據(jù)包;服務(wù)器確認(rèn)數(shù)據(jù)包;客戶端車輛故障數(shù)據(jù)包;客戶端道路堵塞數(shù)據(jù)包。&

16、#160;   為了能夠正確解析數(shù)據(jù)包中的數(shù)據(jù),所有數(shù)據(jù)包都具有相同的包頭(head),即數(shù)據(jù)包類型(packet type),時間戳標(biāo)記(time stamp)、數(shù)據(jù)包順序號(packet sequencenumber)3個字段。當(dāng)接收到一個數(shù)據(jù)包之后,根據(jù)包頭中的類型字段就能判斷該數(shù)據(jù)包主體部分的長度,由此即可正確解析出包中的內(nèi)容。包頭之后是數(shù)據(jù)包主體(body)部分,不同數(shù)據(jù)包類型有著不同的字段和長度。上述8種定義類型之外的數(shù)據(jù)包均為未定義類型,應(yīng)當(dāng)被丟棄。類型為NTSK、TMLF、RCNG的數(shù)據(jù)包需要接收端的確認(rèn);而RECV、SEND、UPDT、CACK、SACK這

17、5種類型的數(shù)據(jù)包不需要確認(rèn)。    GPRS Modem的數(shù)據(jù)傳輸與接收是通過串口編程來實現(xiàn)的。Windows CE平臺上的串口編程依賴于與文件相關(guān)的API接口:CreateFile()打開串口,ReadFile()從串口讀取數(shù)據(jù),WriteFile()向串口寫入數(shù)據(jù)。由于網(wǎng)絡(luò)數(shù)據(jù)包的到來是一個異步過程,因此還需要處理串口的異步事件:GetCommMask()取得串口已經(jīng)設(shè)置的事件,setCom-mMask()設(shè)置串口事件集,WaitCommEvent()等待預(yù)先設(shè)置的串口事件集中的某一事件發(fā)生。33 稱重與打印模塊    該模塊實現(xiàn)

18、了電子稱重和憑單打印功能。    由于采用ZNE-100T以太網(wǎng)口轉(zhuǎn)串口模塊把Liod板的以太網(wǎng)口擴(kuò)充為3個串口,因此對外擴(kuò)的3個串口的訪問是通過以太網(wǎng)口進(jìn)行的,這涉及Windows CE下的網(wǎng)絡(luò)編程。對外擴(kuò)串口的控制是通過向ZNE-100T模塊的3003端口寫入控制命令字來實現(xiàn)的;數(shù)據(jù)的收發(fā)是通過ZNE-100T模塊的4001端口實現(xiàn)的。    網(wǎng)絡(luò)編程接口采用的是Winsock11,采用面向連接的TCP協(xié)議。對數(shù)據(jù)的讀寫采用了非阻塞的方式:寫操作直接將數(shù)據(jù)寫到套接口的輸出緩沖區(qū)中;而數(shù)據(jù)的讀取因為是一個異步過程,因此放在一個單獨的

19、線程中完成。在此線程中定義了OnRead()、OnError()、OnDisconnect()回調(diào)函數(shù),用于把線程中讀取到的數(shù)據(jù)遞交給上層或者處理讀取過程中發(fā)生的異常事件。    由于打印機(jī)、電子秤、GPS都是通過ZNE-lOOT模塊進(jìn)行控制的,而Liod板提供的以太網(wǎng)口只有一個,因此在任何時刻都只能與打印機(jī)、電子秤、GPS三者中的一個通信,而其他兩個設(shè)備的串口則處于關(guān)閉狀態(tài)。這是通過向ZNE-100T模塊的3003端口發(fā)送不同的控制命令字完成的。    對于稱重,只存在由C8051F020單片機(jī)向Liod板的單向數(shù)據(jù)傳輸,稱量的范圍為40g5lOOg,因此重量數(shù)據(jù)采用2個字節(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論