當前位置:首頁 > 嵌入式 > 嵌入式軟件

提出一種基于Windows CE嵌入式操作系統(tǒng)的物流車載終端設(shè)計方案。在此方案中集成了電子地圖、GPS定位、GPRS無線通信、熱敏打印機、電子秤等功能。文中給出了相應(yīng)的實現(xiàn)及測試結(jié)果。

  物流在現(xiàn)代社會中正扮演著越來越重要的角色。但是,與國外技術(shù)密集型的物流行業(yè)相比,國內(nèi)物流行業(yè)在信息化、智能化程度上還存在著較大差距。鑒于這樣一種狀況,本文提出了一個基于Windows CE平臺的物流車載終端設(shè)計方案。該物流車載終端以Liod評估板(簡稱為“Liod板”)為硬件平臺,在嵌入式操作系統(tǒng)Windows CE上實現(xiàn)的功能有:電子地圖,實現(xiàn)地圖4級縮放、平移、歸中功能;無線通信,實現(xiàn)終端與控制中心的GPRS無線通信;GPS定位,定位車載終端當前的位置;稱重與打印,讀取電子秤數(shù)據(jù),實現(xiàn)票據(jù)的打??;語音提示,提供更好的人機交互功能。

  1 軟硬件平臺簡介

  本車載終端以Liod板為硬件平臺。Liod板的核心PXA270是一款屬于Intel XScale微架構(gòu)的高性能、低功耗嵌入式處理器。在本設(shè)計中要用到的主要有LCD、觸摸屏、以太網(wǎng)接口、全功能串口、音頻接口等。本設(shè)計方案采用Windows CE作為軟件平臺。Windows CE是一種針對小容量、移動式、智能化設(shè)備的多任務(wù)、搶占式、模塊化實時嵌入式操作系統(tǒng)。Windows CE具有與桌面Windows幾乎完全兼容的API接口,為了配合Windows CE上的應(yīng)用程序開發(fā),微軟公司推出了eMbedded Visual C++(簡稱“eVC”)集成開發(fā)環(huán)境。本系統(tǒng)采用的是eVC 4.0。

  2 硬件設(shè)計

  2.1 系統(tǒng)硬件設(shè)計

  在Liod板的基礎(chǔ)上擴充了部分外圍電路。根據(jù)Liod板提供的硬件資源和系統(tǒng)需要使用的硬件情況,硬件設(shè)計主要包括兩個部分:以太網(wǎng)口轉(zhuǎn)串口電路設(shè)計和電子秤硬件電路設(shè)計。

  無線通信設(shè)備采用GPRS Modem。該GPRS Modem通過Liod板的串行口COM1發(fā)送和接收數(shù)據(jù);GPS定位采用12通道定位模塊GARMIN15L;打印機采用TD58熱敏打印機;電子秤采用應(yīng)變片壓力傳感器結(jié)合C8051F020單片機自行開發(fā);語音提示模塊直接使用Liod板提供的音頻接口。由于GPS接收模塊、熱敏打印機、電子秤都要通過串行口與Liod板通信,Liod板原有的串口數(shù)量已經(jīng)無法滿足要求,因此采用ZNE100T以太網(wǎng)轉(zhuǎn)串口模塊,把Liod板的以太網(wǎng)口擴充成3個串行口。

  系統(tǒng)的硬件連接如圖1所示。

圖1 系統(tǒng)硬件連接示意圖

表1 ZNC-100T模塊引腳定義

  上述引腳中,GPIO0~GPIO4是可控制通用I/O口。在功能板的設(shè)計中,使用了3個RS232串口分別發(fā)送和接收電子秤數(shù)據(jù)、打印機數(shù)據(jù)和GPS數(shù)據(jù)。本系統(tǒng)采用帶有使能控制信號的MAX3221電平轉(zhuǎn)換芯片選擇要使用的串口,具體做法是將GPIO0~GPIO2分別連接到3個MAX3221的使能端(EN),這樣就可以通過軟件來選擇需要的串口。使能端均為低電平有效,當有一個串口的使能端為0時,其他兩個串口使能端必須為1。

  2.3 電子秤硬件設(shè)計

  電子秤使用應(yīng)變片壓力傳感器、AD8221運算放大器和C8051F020芯片進行設(shè)計。電子秤硬件電路框圖如圖2所示。

圖2 電子秤硬件電路框圖

  物品重量通過應(yīng)變片壓力傳感器轉(zhuǎn)換成比較微弱的電壓信號。此電壓信號經(jīng)過AD8221運算放大器放大,送到C8051F020的ADC1轉(zhuǎn)換器;轉(zhuǎn)換后的數(shù)據(jù)通過串口發(fā)送出去,同時在擴展板的液晶顯示屏上顯示重量。電子秤的UART0和PC串口都使用9 600 bps的波特率。

  C8051F020的ADC1轉(zhuǎn)換器是8位的,因此轉(zhuǎn)換數(shù)據(jù)是0~255。電子秤的分辨率為20 g,最大稱量量程是5.1 kg。

  3 軟件設(shè)計

  3.1 電子地圖

  電子地圖模塊采用柵格圖像實現(xiàn)。柵格圖像又稱“位圖”,由像素點組成。與矢量圖像不同,柵格圖像在用作電子地圖時需要在地圖元素和數(shù)據(jù)之間建立對應(yīng)關(guān)系。

表2 地圖級別與放大倍數(shù)的對應(yīng)關(guān)系

  首先對坐標系統(tǒng)進行簡單的說明。假設(shè)有一個形狀為嚴格矩形的地圖,其像素坐標原點為(0,0),地圖X軸方向上的寬度假設(shè)為W個像素點,Y軸方向的高度假設(shè)為H個像素點,某個點的像素坐標為(x,y),則定義該像素點的歸一化坐標為(x/W,y/H)。這樣,地圖左上角的歸一化坐標為(0.0,0.0),右下角歸一化坐標為(1.0,1.0)。把這樣的坐標系統(tǒng)稱為“歸一化坐標系”。

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

圖3 經(jīng)緯度坐標線性映射示意圖

  根據(jù)設(shè)計要求,本終端的電子地圖支持4級縮放。設(shè)計中采用一幅大小為2 251×1 557、格式為BMP的成都地圖作為原始地圖,即所能支持的最大分辨率的地圖。把縮小8倍以后的地圖作為所能支持的最小分辨率地圖,因此地圖級別與放大倍數(shù)之間具有如表2所列的對應(yīng)關(guān)系。

  對于地圖左上角點和右下角點的經(jīng)緯度坐標的求取,通過實際測量的方法是很難做到準確無誤的。因此本設(shè)計采用一種間接的方法來求得地圖左上角和右下角的經(jīng)緯度坐標。

  假設(shè)在地圖邊界內(nèi)部有兩個任意點,把這兩個點稱為“參考點”,并且已知這兩個參考點的經(jīng)度、緯度、歸一化x坐標、歸一化y坐標;設(shè)參考點1的這4個參數(shù)為point1=(lon1, lat1, x1, y1),參考點2的這4個參數(shù)為point2=(lon2, lat2, x2, y2),即point1和point2已知。根據(jù)前面的說明可知,左上角點的歸一化坐標為(0.0, 0.0),而右下角點的歸一化坐標為(1.0,1.0)。另外假設(shè)左上角點用pointTL表示,其經(jīng)緯度為lonTL和latTL;右下角點用pointBR表示,其經(jīng)緯度為lonBR和latBR(TL意即TopLeft,BR意即BottomRight),則有pointTL=(lonTL,latTL,0.0,0.0)。同理,對于右下角的點有pointBR=(lonBR,latBR,1.0,1.0)。

  由于將經(jīng)緯度與地圖坐標之間近似為線性映射關(guān)系,因此根據(jù)歐氏幾何原理可知,由已知的point1和point2,可以計算出pointTL和pointBR的未知參數(shù):

上述工作完成之后,參考點數(shù)據(jù)的存儲和讀取就比較簡單了?;鶞庶c和車輛位置的計算都只是簡單的代數(shù)計算過程,容易實現(xiàn)。至于地圖的顯示和控制則需要通過Windows CE的API接口來完成。

3.2 GPRS模塊

  本車載終端采用GPRS Modem與控制中心進行無線數(shù)據(jù)通信,對GPRS Modem的控制和讀寫通過串口進行。由于與控制中心交互的數(shù)據(jù)種類較多,因此定義了相應(yīng)的應(yīng)用層數(shù)據(jù)包格式。數(shù)據(jù)包的所有字段均采用單字節(jié)ASCII編碼且為固定長度。在發(fā)送端,數(shù)值型字段需要在發(fā)送前格式化為定長字符串再封裝到數(shù)據(jù)包中;在接收端,需要將數(shù)據(jù)包中的格式化字符串還原為數(shù)值型常量。數(shù)值型字段不足部分以字符“0”為前導字符進行填充;字符型字段不足部分以空格(SPACE,0x20)為前導字符填充。字符串型字段的長度不包括字符串結(jié)尾的NULL字符(在C語言中為0x00)。所有采用UNICODE編碼的字符數(shù)據(jù)在封裝到數(shù)據(jù)包中之前必須進行轉(zhuǎn)換。

  定義的數(shù)據(jù)包主要有以下幾類:客戶端位置更新數(shù)據(jù)包;客戶端接件信息數(shù)據(jù)包;客戶端送達簽收數(shù)據(jù)包;服務(wù)器新任務(wù)數(shù)據(jù)包;客戶端確認數(shù)據(jù)包;服務(wù)器確認數(shù)據(jù)包;客戶端車輛故障數(shù)據(jù)包;客戶端道路堵塞數(shù)據(jù)包。

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

  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è)置的事件,SetCommMask()設(shè)置串口事件集,WaitCommEvent()等待預(yù)先設(shè)置的串口事件集中的某一事件發(fā)生。

3.3 稱重與打印模塊

  該模塊實現(xiàn)了電子稱重和憑單打印功能。

  由于采用ZNE100T以太網(wǎng)口轉(zhuǎn)串口模塊把Liod板的以太網(wǎng)口擴充為3個串口,因此對外擴的3個串口的訪問是通過以太網(wǎng)口進行的,這涉及Windows CE下的網(wǎng)絡(luò)編程。對外擴串口的控制是通過向ZNE100T模塊的3003端口寫入控制命令字來實現(xiàn)的;數(shù)據(jù)的收發(fā)是通過ZNE100T模塊的4001端口實現(xiàn)的。

  網(wǎng)絡(luò)編程接口采用的是Winsock1.1,采用面向連接的TCP協(xié)議。對數(shù)據(jù)的讀寫采用了非阻塞的方式:寫操作直接將數(shù)據(jù)寫到套接口的輸出緩沖區(qū)中;而數(shù)據(jù)的讀取因為是一個異步過程,因此放在一個單獨的線程中完成。在此線程中定義了OnRead()、onError()、OnDisconnect()回調(diào)函數(shù),用于把線程中讀取到的數(shù)據(jù)遞交給上層或者處理讀取過程中發(fā)生的異常事件。

  由于打印機、電子秤、GPS都是通過ZNE100T模塊進行控制的,而Liod板提供的以太網(wǎng)口只有一個,因此在任何時刻都只能與打印機、電子秤、GPS三者中的一個通信,而其他兩個設(shè)備的串口則處于關(guān)閉狀態(tài)。這是通過向ZNE100T模塊的3003端口發(fā)送不同的控制命令字完成的。

  對于稱重,只存在由C8051F020單片機向Liod板的單向數(shù)據(jù)傳輸,稱量的范圍為40 g~5 100 g,因此重量數(shù)據(jù)采用2個字節(jié)表示,單位為g。為了確保數(shù)據(jù)傳輸?shù)臏蚀_,除了2個字節(jié)的重量數(shù)據(jù)之外,還加入了幾個字節(jié)的冗余數(shù)據(jù)。電子秤的數(shù)據(jù)幀格式如下:

參考文獻

[1] 陳章龍,唐志強,涂時亮. 嵌入式技術(shù)與系統(tǒng)——Intel XScale結(jié)構(gòu)與開發(fā)[M]. 北京:北京航空航天大學出版社,2004.
[2] 毛德操,胡希明. 嵌入式系統(tǒng)——采用公開源代碼和StrongARM/Xscale處理器[M]. 杭州:浙江大學出版社,2004.
[3] 候俊杰. 深入淺出MFC[M]. 第2版. 武漢:華中科技大學出版社,2004.
[4] 汪兵,李存斌,陳鵬. EVC高級編程及其應(yīng)用開發(fā)[M]. 北京:中國水利水電出版社,2005.
[5] 田東風. Windows CE應(yīng)用程序設(shè)計[M]. 北京:機械工業(yè)出版社,2003.
[6] 童長飛. C8051F系列單片機開發(fā)與C語言編程[M]. 北京:北京航空航天大學出版社,2005.
[7] MapInfo公司. MapX Help Online.
[8] 同志工作室. Visual Basic 6.0 API函數(shù)開發(fā)實例[M]. 北京:人民郵電出版社,2000.

陳云川、劉鋒(碩士研究生),主要研究方向為嵌入式應(yīng)用。



本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉