摘 要:針對掌上電腦應(yīng)用領(lǐng)域的實際需求,采用嵌入式編程技術(shù)設(shè)計了一種圖片瀏覽模塊。介紹了該模塊的硬件構(gòu)成和軟件開發(fā)環(huán)境,討論了用EVC實現(xiàn)圖片瀏覽功能的設(shè)計思想,給出了編程的具體步驟。采用了新穎的設(shè)計方法,開發(fā)出了一款友好的操作界面,提高了圖片瀏覽的效率,并可以打開多種格式的圖片。實際應(yīng)用表明,該模塊便攜性好,操作方便,特別適合在車、船等空間狹小的場合使用,并可以方便地在此基礎(chǔ)上進(jìn)行功能擴(kuò)展,具有一定的實用性和推廣價值。
關(guān)鍵詞:掌上電腦;嵌入式編程;便攜式;圖片瀏覽
中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2008)11-165-02
Design and Realization of Bitmap Browse Module Based on Pocket PC
JIA Peiyong,LI Tianwei,LI Zhengyou
(Dalian Naval Academy,Dalian,116018,China)
Abstract:Using embedded developing technology,a new kind of bitmap browse module is designed to meet the requirement in the application field of Pocket PC.This paper discusses the programme condition and the design idea,and gives the concrete steps of programme.To improve the efficiency of bitmap browse,a friendly operation interface is developed.Many kinds of bitmap such as bmp,jpg and gif could be opened in the module.Also the function of the module could be easily extended.It is proved that the module is practical and worthy of using abroad,for it is portable,easy to be operated,and adapt to be used aboard.
Keywords:pocket PC;embedded design program;portable;bitmap browse
掌上電腦是一種比筆記本電腦還要小得多的手持式電腦,具有價格低、體積小、重量輕和便于攜帶的優(yōu)點。目前,掌上電腦的應(yīng)用重點是充分發(fā)揮其良好的便攜性,通過開發(fā)各種嵌入式應(yīng)用程序,逐步擴(kuò)展其功能,將其應(yīng)用到工程測繪、智能交通和故障診斷等諸多領(lǐng)域。在上述應(yīng)用領(lǐng)域中,往往涉及到對電子版圖片資料的瀏覽。盡管掌上電腦的操作系統(tǒng)本身提供了圖片瀏覽功能,但其操作界面不夠友好,圖片瀏覽效率不高。為此,本文將采用嵌入式編程技術(shù)設(shè)計一種基于掌上電腦的圖片瀏覽模塊。該模塊既可作為一種功能完備的圖片瀏覽手冊直接投入實際應(yīng)用,也可作為一個功能模塊,添加到基于掌上電腦的大型應(yīng)用系統(tǒng)中。
1 硬件構(gòu)成
本文設(shè)計的圖片瀏覽模塊的硬件主要包括掌上電腦和存儲卡,此外還包括數(shù)據(jù)線和充電器等配件。使用的掌上電腦采用Windows CE 4.2嵌入式操作系統(tǒng),內(nèi)存為64 MB,帶有存儲卡插槽,操作方式為手寫。由于掌上電腦一般不配備硬盤,故采用存儲卡來存儲圖片資料。通常1 GB大小的存儲卡即可存儲數(shù)十乃至數(shù)百張圖片資料,可以滿足一般需求。數(shù)據(jù)線既可用于將掌上電腦與開發(fā)主機連接進(jìn)行程序的調(diào)試和下載,又可用于將掌上電腦與計算機連線以對圖片資料進(jìn)行管理,還可用于通過USB接口對掌上電腦進(jìn)行充電。掌上電腦和手機類似,需要經(jīng)常進(jìn)行充電,所以充電器是必要的配件。整套硬件總重量不超過1 kg,且體積很小,體現(xiàn)了良好的便攜性。
2 軟件設(shè)計
2.1 開發(fā)環(huán)境
研究過程中以Embedded Visual C++(簡稱EVC)4.0+SP4為開發(fā)工具。EVC是微軟公司推出的開發(fā)Windows CE應(yīng)用程序的成熟的、強大的工具,與VC開發(fā)工具有一定的相似之處。為方便調(diào)試,在開發(fā)主機(臺式計算機)上安裝Windows CE Platform SDK作為掌上電腦的模擬環(huán)境。當(dāng)然,也可將掌上電腦通過數(shù)據(jù)線與開發(fā)主機連接進(jìn)行實際調(diào)試。
Windows CE應(yīng)用程序的開發(fā)需要將程序下載到Windows CE目標(biāo)設(shè)備上運行,并且調(diào)試時的情況也是一樣,因此在開發(fā)過程中,必須考慮設(shè)置EVC同目標(biāo)設(shè)備的連接。EVC提供了Configure Platform Manager工具用來配置與目標(biāo)設(shè)備的連接[1]。
在本文研究過程中,模擬環(huán)境下調(diào)試時的傳輸方式和啟動方式分別采用了TCP/IP Transport for Windows CE和Emulator Startup Server,而將開發(fā)主機與掌上電腦連接調(diào)試時均采用了Microsoft ActiveSync方式。
2.2 關(guān)鍵操作的設(shè)計思路
本文設(shè)計的軟件實際上是一款位圖瀏覽器。下面結(jié)合掌上電腦硬件和操作方面的特點,討論一下圖片的讀取、漫游和縮放等關(guān)鍵操作的設(shè)計思路。
2.2.1 圖片讀取
掌上電腦一般不配備硬盤,可以通過外接存儲卡來存儲文件。其內(nèi)存很小,一般只有幾十MB,且兼有存儲文件和運行程序的功能,用戶可以在內(nèi)存設(shè)置中調(diào)節(jié)兩種功能所占用內(nèi)存資源的比例。可見,當(dāng)位圖資料較多時,必須借助存儲卡來存儲;當(dāng)位圖資料比較少時,可以將其存儲在內(nèi)存中,也可以將其添加到程序的資源中。
值得注意的是,從程序的資源中讀取位圖速度最快,但生成的可執(zhí)行文件的大小將隨著所添加位圖資源的增多呈線性增長,容易導(dǎo)致程序因內(nèi)存不足而無法運行;采用從存儲卡中讀取位圖的方式速度比較慢,但生成的可執(zhí)行文件很小,運行時占用內(nèi)存少;而當(dāng)把位圖資料存在內(nèi)存中進(jìn)行讀取時,盡管生成的可執(zhí)行文件也很小,且讀取速度很快,但內(nèi)存中不可能存儲大量位圖文件。因此,可根據(jù)實際需要選擇其中的一種或多種讀取方式??紤]到實用性,本文設(shè)計的模塊采用了通過存儲卡進(jìn)行圖片的存儲和讀取的方式。
2.2.2 圖片的漫游
鑒于掌上電腦一般采用手寫輸入,圖片的漫游設(shè)計采用中心移動和多向滾動相結(jié)合的模式。其中,中心移動模式即當(dāng)用戶用手寫工具點擊屏幕時,圖片將以被點擊的區(qū)域為中心,重新繪制在顯示窗口,從而方便了用戶對圖片中感興趣區(qū)域的瀏覽;多向滾動模式即將屏幕邊緣劃分為8個區(qū)域,不同區(qū)域被用戶點擊時,圖片將向相應(yīng)的方向滾動。例如,當(dāng)用戶點擊屏幕左邊緣時,圖片將自動向右方滾動,將圖片左面的部分呈現(xiàn)給用戶,當(dāng)用戶再次點擊屏幕或滾動至圖片邊緣時停止?jié)L動。該漫游模式特別有利于用戶對圖紙中某一線條的跟蹤。將上述兩種漫游模式相結(jié)合從一定程度上減小了掌上電腦因屏幕小帶來的不便。
2.2.3 圖片的縮放
為保證用戶當(dāng)前瀏覽的區(qū)域在圖片縮放后不會移出顯示窗口,程序應(yīng)在放大或縮小的同時響應(yīng)“中心移動”指令。即當(dāng)用戶在縮放模式下點擊圖片的某一區(qū)域時,程序?qū)芽s放后的圖片以被點擊區(qū)域為中心重新繪制在顯示窗口上。同時,為常用的縮放比例設(shè)置相應(yīng)菜單。用戶既可以在激活工具欄中縮放按鈕的情況下通過點擊屏幕進(jìn)行圖片的無極縮放,也可以通過點擊菜單迅速地將圖片以所需比例顯示。
2.3 編程實現(xiàn)
2.3.1 生成程序框架
打開Microsoft eMbedded Visual C++4.0,首先選擇菜單項File→New→Projects,然后選擇WCE MFC AppWizard [exe],假設(shè)Project name為BmpBrowser,確定后,進(jìn)入一個向?qū)е校渲械谝徊竭xsingledocument,語言選擇英語,其他采用缺省值,點擊Finish,則程序框架便生成了。
2.3.2 編制源代碼
EVC與VC開發(fā)工具在語言代碼和編程思想上有很大的相似之處,而可供參考的有關(guān)用VC實現(xiàn)圖片瀏覽功能的文獻(xiàn)比較多,因此下面只針對一些不同點和關(guān)鍵點介紹一下源代碼的編制過程。
(1) 制作工具欄。修改資源管理器中Toolbar下的工具欄,修改后工具欄的樣式如圖1所示。在視圖類BmpBrowserView中為“打開”按鈕添加消息響應(yīng)函數(shù),用于將用戶選擇的圖片加載到內(nèi)存中。以從存儲卡中加載圖片為例,加載bmp格式的圖片采用函數(shù)SHLoadDIBitmap(),加載jpg和gif格式的圖片可采用函數(shù)SHLoadImageFile()。然后為“中心移動、多向滾動、放大、縮小”四個按鈕添加消息響應(yīng)函數(shù)。定義操作模式轉(zhuǎn)換變量moperation,在上述四個函數(shù)中為該變量賦以不同的值,用于區(qū)分哪種操作模式處于激活狀態(tài)。
(2) 顯示位圖。修改視圖類BmpBrowserView中的OnDraw(),用StretchBlt( )函數(shù)顯示圖片,該函數(shù)可以實現(xiàn)位圖的縮小和放大[2]。由于掌上電腦內(nèi)存小,一般只有64 MB,且系統(tǒng)進(jìn)程已占用了不少內(nèi)存,而位圖顯示會占用較多的內(nèi)存資源,因此要及時釋放無用的資源,避免內(nèi)存泄漏[3]。
(3) 為屏幕點擊操作添加程序代碼。在視圖類BmpBrowserView中添加消息響應(yīng)函數(shù)OnLButtonDown( )或OnLButtonUp( )用戶的點擊操作。在上述函數(shù)中為中心移動、多向滾動、放大和縮小等操作添加相應(yīng)代碼。上述4種操作是通過修改StretchBlt( )函數(shù)中的變量來實現(xiàn)的。其中,實現(xiàn)多向滾動操作時啟動了定時器,在OnTimer( )函數(shù)中通過修改StretchBlt( )函數(shù)中的變量來實現(xiàn)圖片的滾動;刷新顯示使用RedrawWindow( )函數(shù),該函數(shù)能有效地防止刷新時存在的閃屏問題。
(4) 制作菜單。修改Resourse目錄樹中Memulbar下的菜單項,設(shè)置“文件”、“視圖”等菜單,可根據(jù)需要添加各種子菜單。
2.3.3 編譯、調(diào)試并生成可執(zhí)行文件
進(jìn)行編譯調(diào)試前,需要確認(rèn)目標(biāo)機器和編譯類型。仿真環(huán)境下,目標(biāo)機器選擇Pocket PC 2003 | Pocket PC 2003 Emulator,編譯類型選擇Win32 [WCE emulator] Debug;連接掌上電腦調(diào)試運行時,目標(biāo)機器選擇Pocket PC 2003 | Win32 [WCE ARMV4] Debug,編譯類型選擇Pocket PC 2003 Device。
圖1是本文設(shè)計的圖片瀏覽模塊打開一張電路圖時的工作界面。

3 結(jié) 語
本文設(shè)計的圖片瀏覽模塊便攜性好,操作方便,可以
打開多種格式的位圖文件,并實現(xiàn)了圖片的中心移動、多向滾動、放大、縮小等瀏覽功能。與掌上電腦的Windows CE操作系統(tǒng)自帶的圖片瀏覽功能相比,功能更實用,操作界面更友好,從而提高了圖片的瀏覽效率。由于該模塊具有良好的便攜性,因此特別適合在車、船等空間狹小的場合使用。同時,軟件開發(fā)人員可以很方便地在該模塊的基礎(chǔ)上進(jìn)行功能擴(kuò)展,例如可以通過添加數(shù)據(jù)庫、虛擬儀器和設(shè)備說明書等功能模塊,將其應(yīng)用到實際工程領(lǐng)域。
參 考 文 獻(xiàn)
[1]汪兵,李存斌,陳鵬.EVC高級編程及其應(yīng)用開發(fā)[M].北京:中國水利水電出版社,2005.
[2]Jeff Prosise.MFC Windows 程序設(shè)計 [M].2版.北京:清華大學(xué)出版社,2001.
[3]胡榮華,樓佩煌.基于掌上電腦的工業(yè)現(xiàn)場無線視頻監(jiān)控技術(shù)研究[J].計算機測量與控制,2006,14(7):881-883.
作者簡介 賈培勇 男,1982年出生,河北滄縣人,碩士研究生。主要從事交通信息工程與控制方面的研究。