摘 要:針對(duì)掌上電腦應(yīng)用領(lǐng)域的實(shí)際需求,采用嵌入式編程技術(shù)設(shè)計(jì)了一種圖片瀏覽模塊。介紹了該模塊的硬件構(gòu)成和軟件開發(fā)環(huán)境,討論了用EVC實(shí)現(xiàn)圖片瀏覽功能的設(shè)計(jì)思想,給出了編程的具體步驟。采用了新穎的設(shè)計(jì)方法,開發(fā)出了一款友好的操作界面,提高了圖片瀏覽的效率,并可以打開多種格式的圖片。實(shí)際應(yīng)用表明,該模塊便攜性好,操作方便,特別適合在車、船等空間狹小的場(chǎng)合使用,并可以方便地在此基礎(chǔ)上進(jìn)行功能擴(kuò)展,具有一定的實(shí)用性和推廣價(jià)值。
關(guān)鍵詞:掌上電腦;嵌入式編程;便攜式;圖片瀏覽
中圖分類號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):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
掌上電腦是一種比筆記本電腦還要小得多的手持式電腦,具有價(jià)格低、體積小、重量輕和便于攜帶的優(yōu)點(diǎn)。目前,掌上電腦的應(yīng)用重點(diǎn)是充分發(fā)揮其良好的便攜性,通過(guò)開發(fā)各種嵌入式應(yīng)用程序,逐步擴(kuò)展其功能,將其應(yīng)用到工程測(cè)繪、智能交通和故障診斷等諸多領(lǐng)域。在上述應(yīng)用領(lǐng)域中,往往涉及到對(duì)電子版圖片資料的瀏覽。盡管掌上電腦的操作系統(tǒng)本身提供了圖片瀏覽功能,但其操作界面不夠友好,圖片瀏覽效率不高。為此,本文將采用嵌入式編程技術(shù)設(shè)計(jì)一種基于掌上電腦的圖片瀏覽模塊。該模塊既可作為一種功能完備的圖片瀏覽手冊(cè)直接投入實(shí)際應(yīng)用,也可作為一個(gè)功能模塊,添加到基于掌上電腦的大型應(yīng)用系統(tǒng)中。
1 硬件構(gòu)成
本文設(shè)計(jì)的圖片瀏覽模塊的硬件主要包括掌上電腦和存儲(chǔ)卡,此外還包括數(shù)據(jù)線和充電器等配件。使用的掌上電腦采用Windows CE 4.2嵌入式操作系統(tǒng),內(nèi)存為64 MB,帶有存儲(chǔ)卡插槽,操作方式為手寫。由于掌上電腦一般不配備硬盤,故采用存儲(chǔ)卡來(lái)存儲(chǔ)圖片資料。通常1 GB大小的存儲(chǔ)卡即可存儲(chǔ)數(shù)十乃至數(shù)百?gòu)垐D片資料,可以滿足一般需求。數(shù)據(jù)線既可用于將掌上電腦與開發(fā)主機(jī)連接進(jìn)行程序的調(diào)試和下載,又可用于將掌上電腦與計(jì)算機(jī)連線以對(duì)圖片資料進(jìn)行管理,還可用于通過(guò)USB接口對(duì)掌上電腦進(jìn)行充電。掌上電腦和手機(jī)類似,需要經(jīng)常進(jìn)行充電,所以充電器是必要的配件。整套硬件總重量不超過(guò)1 kg,且體積很小,體現(xiàn)了良好的便攜性。
2 軟件設(shè)計(jì)
2.1 開發(fā)環(huán)境
研究過(guò)程中以Embedded Visual C++(簡(jiǎn)稱EVC)4.0+SP4為開發(fā)工具。EVC是微軟公司推出的開發(fā)Windows CE應(yīng)用程序的成熟的、強(qiáng)大的工具,與VC開發(fā)工具有一定的相似之處。為方便調(diào)試,在開發(fā)主機(jī)(臺(tái)式計(jì)算機(jī))上安裝Windows CE Platform SDK作為掌上電腦的模擬環(huán)境。當(dāng)然,也可將掌上電腦通過(guò)數(shù)據(jù)線與開發(fā)主機(jī)連接進(jìn)行實(shí)際調(diào)試。
Windows CE應(yīng)用程序的開發(fā)需要將程序下載到Windows CE目標(biāo)設(shè)備上運(yùn)行,并且調(diào)試時(shí)的情況也是一樣,因此在開發(fā)過(guò)程中,必須考慮設(shè)置EVC同目標(biāo)設(shè)備的連接。EVC提供了Configure Platform Manager工具用來(lái)配置與目標(biāo)設(shè)備的連接[1]。
在本文研究過(guò)程中,模擬環(huán)境下調(diào)試時(shí)的傳輸方式和啟動(dòng)方式分別采用了TCP/IP Transport for Windows CE和Emulator Startup Server,而將開發(fā)主機(jī)與掌上電腦連接調(diào)試時(shí)均采用了Microsoft ActiveSync方式。
2.2 關(guān)鍵操作的設(shè)計(jì)思路
本文設(shè)計(jì)的軟件實(shí)際上是一款位圖瀏覽器。下面結(jié)合掌上電腦硬件和操作方面的特點(diǎn),討論一下圖片的讀取、漫游和縮放等關(guān)鍵操作的設(shè)計(jì)思路。
2.2.1 圖片讀取
掌上電腦一般不配備硬盤,可以通過(guò)外接存儲(chǔ)卡來(lái)存儲(chǔ)文件。其內(nèi)存很小,一般只有幾十MB,且兼有存儲(chǔ)文件和運(yùn)行程序的功能,用戶可以在內(nèi)存設(shè)置中調(diào)節(jié)兩種功能所占用內(nèi)存資源的比例。可見,當(dāng)位圖資料較多時(shí),必須借助存儲(chǔ)卡來(lái)存儲(chǔ);當(dāng)位圖資料比較少時(shí),可以將其存儲(chǔ)在內(nèi)存中,也可以將其添加到程序的資源中。
值得注意的是,從程序的資源中讀取位圖速度最快,但生成的可執(zhí)行文件的大小將隨著所添加位圖資源的增多呈線性增長(zhǎng),容易導(dǎo)致程序因內(nèi)存不足而無(wú)法運(yùn)行;采用從存儲(chǔ)卡中讀取位圖的方式速度比較慢,但生成的可執(zhí)行文件很小,運(yùn)行時(shí)占用內(nèi)存少;而當(dāng)把位圖資料存在內(nèi)存中進(jìn)行讀取時(shí),盡管生成的可執(zhí)行文件也很小,且讀取速度很快,但內(nèi)存中不可能存儲(chǔ)大量位圖文件。因此,可根據(jù)實(shí)際需要選擇其中的一種或多種讀取方式??紤]到實(shí)用性,本文設(shè)計(jì)的模塊采用了通過(guò)存儲(chǔ)卡進(jìn)行圖片的存儲(chǔ)和讀取的方式。
2.2.2 圖片的漫游
鑒于掌上電腦一般采用手寫輸入,圖片的漫游設(shè)計(jì)采用中心移動(dòng)和多向滾動(dòng)相結(jié)合的模式。其中,中心移動(dòng)模式即當(dāng)用戶用手寫工具點(diǎn)擊屏幕時(shí),圖片將以被點(diǎn)擊的區(qū)域?yàn)橹行?,重新繪制在顯示窗口,從而方便了用戶對(duì)圖片中感興趣區(qū)域的瀏覽;多向滾動(dòng)模式即將屏幕邊緣劃分為8個(gè)區(qū)域,不同區(qū)域被用戶點(diǎn)擊時(shí),圖片將向相應(yīng)的方向滾動(dòng)。例如,當(dāng)用戶點(diǎn)擊屏幕左邊緣時(shí),圖片將自動(dòng)向右方滾動(dòng),將圖片左面的部分呈現(xiàn)給用戶,當(dāng)用戶再次點(diǎn)擊屏幕或滾動(dòng)至圖片邊緣時(shí)停止?jié)L動(dòng)。該漫游模式特別有利于用戶對(duì)圖紙中某一線條的跟蹤。將上述兩種漫游模式相結(jié)合從一定程度上減小了掌上電腦因屏幕小帶來(lái)的不便。
2.2.3 圖片的縮放
為保證用戶當(dāng)前瀏覽的區(qū)域在圖片縮放后不會(huì)移出顯示窗口,程序應(yīng)在放大或縮小的同時(shí)響應(yīng)“中心移動(dòng)”指令。即當(dāng)用戶在縮放模式下點(diǎn)擊圖片的某一區(qū)域時(shí),程序?qū)芽s放后的圖片以被點(diǎn)擊區(qū)域?yàn)橹行闹匦吕L制在顯示窗口上。同時(shí),為常用的縮放比例設(shè)置相應(yīng)菜單。用戶既可以在激活工具欄中縮放按鈕的情況下通過(guò)點(diǎn)擊屏幕進(jìn)行圖片的無(wú)極縮放,也可以通過(guò)點(diǎn)擊菜單迅速地將圖片以所需比例顯示。
2.3 編程實(shí)現(xiàn)
2.3.1 生成程序框架
打開Microsoft eMbedded Visual C++4.0,首先選擇菜單項(xiàng)File→New→Projects,然后選擇WCE MFC AppWizard [exe],假設(shè)Project name為BmpBrowser,確定后,進(jìn)入一個(gè)向?qū)е?,其中第一步選singledocument,語(yǔ)言選擇英語(yǔ),其他采用缺省值,點(diǎn)擊Finish,則程序框架便生成了。
2.3.2 編制源代碼
EVC與VC開發(fā)工具在語(yǔ)言代碼和編程思想上有很大的相似之處,而可供參考的有關(guān)用VC實(shí)現(xiàn)圖片瀏覽功能的文獻(xiàn)比較多,因此下面只針對(duì)一些不同點(diǎn)和關(guān)鍵點(diǎn)介紹一下源代碼的編制過(guò)程。
(1) 制作工具欄。修改資源管理器中Toolbar下的工具欄,修改后工具欄的樣式如圖1所示。在視圖類BmpBrowserView中為“打開”按鈕添加消息響應(yīng)函數(shù),用于將用戶選擇的圖片加載到內(nèi)存中。以從存儲(chǔ)卡中加載圖片為例,加載bmp格式的圖片采用函數(shù)SHLoadDIBitmap(),加載jpg和gif格式的圖片可采用函數(shù)SHLoadImageFile()。然后為“中心移動(dòng)、多向滾動(dòng)、放大、縮小”四個(gè)按鈕添加消息響應(yīng)函數(shù)。定義操作模式轉(zhuǎn)換變量moperation,在上述四個(gè)函數(shù)中為該變量賦以不同的值,用于區(qū)分哪種操作模式處于激活狀態(tài)。
(2) 顯示位圖。修改視圖類BmpBrowserView中的OnDraw(),用StretchBlt( )函數(shù)顯示圖片,該函數(shù)可以實(shí)現(xiàn)位圖的縮小和放大[2]。由于掌上電腦內(nèi)存小,一般只有64 MB,且系統(tǒng)進(jìn)程已占用了不少內(nèi)存,而位圖顯示會(huì)占用較多的內(nèi)存資源,因此要及時(shí)釋放無(wú)用的資源,避免內(nèi)存泄漏[3]。
(3) 為屏幕點(diǎn)擊操作添加程序代碼。在視圖類BmpBrowserView中添加消息響應(yīng)函數(shù)OnLButtonDown( )或OnLButtonUp( )用戶的點(diǎn)擊操作。在上述函數(shù)中為中心移動(dòng)、多向滾動(dòng)、放大和縮小等操作添加相應(yīng)代碼。上述4種操作是通過(guò)修改StretchBlt( )函數(shù)中的變量來(lái)實(shí)現(xiàn)的。其中,實(shí)現(xiàn)多向滾動(dòng)操作時(shí)啟動(dòng)了定時(shí)器,在OnTimer( )函數(shù)中通過(guò)修改StretchBlt( )函數(shù)中的變量來(lái)實(shí)現(xiàn)圖片的滾動(dòng);刷新顯示使用RedrawWindow( )函數(shù),該函數(shù)能有效地防止刷新時(shí)存在的閃屏問(wèn)題。
(4) 制作菜單。修改Resourse目錄樹中Memulbar下的菜單項(xiàng),設(shè)置“文件”、“視圖”等菜單,可根據(jù)需要添加各種子菜單。
2.3.3 編譯、調(diào)試并生成可執(zhí)行文件
進(jìn)行編譯調(diào)試前,需要確認(rèn)目標(biāo)機(jī)器和編譯類型。仿真環(huán)境下,目標(biāo)機(jī)器選擇Pocket PC 2003 | Pocket PC 2003 Emulator,編譯類型選擇Win32 [WCE emulator] Debug;連接掌上電腦調(diào)試運(yùn)行時(shí),目標(biāo)機(jī)器選擇Pocket PC 2003 | Win32 [WCE ARMV4] Debug,編譯類型選擇Pocket PC 2003 Device。
圖1是本文設(shè)計(jì)的圖片瀏覽模塊打開一張電路圖時(shí)的工作界面。
3 結(jié) 語(yǔ)
本文設(shè)計(jì)的圖片瀏覽模塊便攜性好,操作方便,可以
打開多種格式的位圖文件,并實(shí)現(xiàn)了圖片的中心移動(dòng)、多向滾動(dòng)、放大、縮小等瀏覽功能。與掌上電腦的Windows CE操作系統(tǒng)自帶的圖片瀏覽功能相比,功能更實(shí)用,操作界面更友好,從而提高了圖片的瀏覽效率。由于該模塊具有良好的便攜性,因此特別適合在車、船等空間狹小的場(chǎng)合使用。同時(shí),軟件開發(fā)人員可以很方便地在該模塊的基礎(chǔ)上進(jìn)行功能擴(kuò)展,例如可以通過(guò)添加數(shù)據(jù)庫(kù)、虛擬儀器和設(shè)備說(shuō)明書等功能模塊,將其應(yīng)用到實(shí)際工程領(lǐng)域。
參 考 文 獻(xiàn)
[1]汪兵,李存斌,陳鵬.EVC高級(jí)編程及其應(yīng)用開發(fā)[M].北京:中國(guó)水利水電出版社,2005.
[2]Jeff Prosise.MFC Windows 程序設(shè)計(jì) [M].2版.北京:清華大學(xué)出版社,2001.
[3]胡榮華,樓佩煌.基于掌上電腦的工業(yè)現(xiàn)場(chǎng)無(wú)線視頻監(jiān)控技術(shù)研究[J].計(jì)算機(jī)測(cè)量與控制,2006,14(7):881-883.
作者簡(jiǎn)介 賈培勇 男,1982年出生,河北滄縣人,碩士研究生。主要從事交通信息工程與控制方面的研究。