亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        WinCE電子紙閱讀器實現(xiàn)的關(guān)鍵問題研究

        2010-09-25 02:58:38李慶誠劉建志
        關(guān)鍵詞:閱讀器調(diào)用繪圖

        李慶誠,劉建志

        (南開大學(xué)軟件學(xué)院,天津 300071)

        引 言

        近幾年來,很多廠家紛紛加入電子紙閱讀器領(lǐng)域,推出了許多新的技術(shù)和產(chǎn)品使這個產(chǎn)業(yè)有了快速的發(fā)展。與紙質(zhì)閱讀相比,電子紙閱讀器具有無輻射、資源豐富、存儲容量大、便于攜帶等特點,所以得到了越來越多用戶的關(guān)注和使用。

        WinCE是微軟推出的一款通用嵌入式操作系統(tǒng),具有模塊化系統(tǒng)定制、多硬件平臺支持、強大的開發(fā)工具支持等特點[1]。此外,WinCE平臺提供了多種格式的閱讀應(yīng)用程序,開發(fā)者只需要添加組件就可以支持多種格式的閱讀。本設(shè)計采用WinCE操作系統(tǒng)和E-Ink屏幕,實現(xiàn)了支持多種文檔格式閱讀、屏幕旋轉(zhuǎn)、觸摸屏輸入、PC同步等功能的電子紙閱讀器。

        1 WinCE系統(tǒng)架構(gòu)

        如圖1所示,按照功能層次劃分,WinCE系統(tǒng)架構(gòu)可以分為硬件、板級支持包(BSP)、操作系統(tǒng)(OS)以及應(yīng)用程序四層結(jié)構(gòu)[2]。

        設(shè)計WinCE系統(tǒng)時,針對不同硬件平臺需要按照如下步驟進行系統(tǒng)開發(fā):

        ①開發(fā)系統(tǒng)BSP,包括啟動程序(Bootloader)、設(shè)備驅(qū)動和OAL,使WinCE在硬件平臺上運行;

        ②根據(jù)應(yīng)用需求,選擇合適的OS組件構(gòu)建系統(tǒng)映像;

        ③使用定制OS的SDK開發(fā)應(yīng)用程序。

        按上述步驟實現(xiàn)電子紙閱讀器過程中,開發(fā)電子紙顯示驅(qū)動和閱讀器應(yīng)用程序開發(fā)是實現(xiàn)閱讀器的兩個關(guān)鍵問題。

        2 關(guān)鍵問題解決

        2.1 電子紙顯示驅(qū)動

        WinCE顯示驅(qū)動由 GWES.exe加載管理,通過WinCE內(nèi)核的一個組件GDI(Graphics Device Interface)加載調(diào)用顯示驅(qū)動。應(yīng)用程序通過GDI組件調(diào)用顯示驅(qū)動,并在電子紙上顯示。

        圖1 WinCE系統(tǒng)架構(gòu)

        微軟公司提供了一系列與顯示驅(qū)動相關(guān)的C++代碼來簡化WinCE顯示驅(qū)動開發(fā)。這些類中最重要的是純虛類(Graphics Primitive Engine,GPE)。通過繼承該類實現(xiàn)GPE的虛函數(shù),可以完成顯示驅(qū)動MDD層的開發(fā)[3]。

        此外,微軟提供了多種不同顯示設(shè)備的驅(qū)動源代碼。其中,NOPDISP是一個簡單的顯示驅(qū)動框架,實現(xiàn)了顯示驅(qū)動GPE類的虛函數(shù)[4]。在NOPDISP簡單清晰的驅(qū)動框架基礎(chǔ)上添加電子紙控制器設(shè)備相關(guān)代碼,即可實現(xiàn)本設(shè)計電子紙的WinCE顯示驅(qū)動。

        WinCE電子紙顯示驅(qū)動主要包括設(shè)備初始化、刷屏機制和旋轉(zhuǎn)支持3個部分。

        2.1.1 設(shè)備初始化

        在生成GPE類派生對象Wrap2bpp構(gòu)造函數(shù)中完成初始化工作,設(shè)置GPE相關(guān)成員變量,包括顯示寬度、顯示高度、像素點存儲位數(shù)以及顯存等變量。通過調(diào)用PDD層接口DispDrvrInitialize完成初始化電子紙控制器與CPU相連的GPIO端口,設(shè)置時鐘中斷,分配顯存空間的工作[5]。

        在PDD層生成顯存空間buffer,并在MDD層將GPE成員變量m_pVirtualFrameBuffer賦值為buffer。這樣應(yīng)用程序的繪圖請求通過MDD層在顯存地址空間保存顯示數(shù)據(jù)內(nèi)容,當PDD層確定繪圖區(qū)域進行刷屏時,向電子紙控制器送入顯存相應(yīng)位置和大小的數(shù)據(jù)進行顯示。

        2.1.2 刷屏機制

        顯示驅(qū)動被GWES.exe加載后,當應(yīng)用程序第一次有繪圖請求時,調(diào)用DispDrvrDirtyRectDump函數(shù)。具體流程如圖2所示。

        首先,清除Bootloader啟動界面殘影,創(chuàng)建刷屏事件 freshEvent1、freshEvent2,創(chuàng)建刷屏狀態(tài)state并初始化為 state0;然后,創(chuàng)建刷屏線程,調(diào)用 file Rect函數(shù)填充本次繪圖區(qū)域。

        當應(yīng)用程序再次有繪圖請求時,根據(jù)顯示驅(qū)動保存的繪圖區(qū)域和應(yīng)用程序的繪圖請求區(qū)域兩個參數(shù)創(chuàng)建新的繪圖區(qū)域。顯示驅(qū)動刷屏線程會根據(jù)當時刷屏狀態(tài)采取不同動作。

        圖2 電子紙顯示驅(qū)動創(chuàng)建刷屏線程流程

        圖3 刷屏狀態(tài)轉(zhuǎn)換圖

        圖3為顯示驅(qū)動刷屏過程 中 state0、state1、state2三個刷屏狀態(tài)的轉(zhuǎn)換圖。當狀態(tài)為 state0時,會等待刷屏請求;狀態(tài)為state1時,設(shè)置等待時間為50 ms,刷屏線程直到應(yīng)用程序沒有刷屏請求后轉(zhuǎn)到state2狀態(tài)再進行刷屏;狀態(tài)為state2時,進行刷屏操作,同時記錄此時應(yīng)用程序的刷屏請求、刷屏數(shù)據(jù)以及區(qū)域信息。這樣減少了刷屏次數(shù),起到了緩沖作用,解決了不斷刷屏所造成的應(yīng)用程序響應(yīng)時間慢以及實用性差的問題。

        2.1.3 旋轉(zhuǎn)支持

        屏幕旋轉(zhuǎn)包括圖像旋轉(zhuǎn)和坐標系旋轉(zhuǎn)兩個部分:設(shè)置電子紙控制器相關(guān)寄存器的值,通過控制器提供的旋轉(zhuǎn)功能對顯存中的數(shù)據(jù)進行旋轉(zhuǎn),完成圖像旋轉(zhuǎn);修改GPE的成員變量m_iRotate為改變后的角度,完成坐標系的旋轉(zhuǎn)。

        2.2 應(yīng)用程序開發(fā)

        電子閱讀器的主要功能主要包括兩部分應(yīng)用程序:不同文檔格式的閱讀程序;書架程序,用來顯示存儲介質(zhì)中的文檔,并調(diào)用格式對應(yīng)的閱讀程序進行顯示。

        本文設(shè)計的電子紙閱讀器除了具有基本的文檔閱讀功能外,還包括瀏覽器、應(yīng)用程序擴展、系統(tǒng)設(shè)置等功能。如圖4所示,應(yīng)用程序主要包括主界面、書架、應(yīng)用、瀏覽器,以及系統(tǒng)設(shè)置等程序。

        圖4 應(yīng)用程序

        2.2.1 主界面程序

        主界面程序是電子閱讀器啟動時首先調(diào)用的程序,根據(jù)用戶點擊位置調(diào)用書架、瀏覽器、應(yīng)用、系統(tǒng)設(shè)置四個不同的程序。

        本文通過修改配置文件實現(xiàn)主界面程序隨內(nèi)核啟動自動運行:

        ①修改桌面任務(wù)欄,使任務(wù)欄不在最前面并自動隱藏,這樣應(yīng)用程序全屏顯示就會覆蓋任務(wù)欄;

        ②去掉注冊表中桌面存在的快捷方式,并將桌面背景修改為主界面背景;

        ③添加主界面程序到注冊表,實現(xiàn)啟動自動運行。

        這樣,就可以在系統(tǒng)啟動時先調(diào)用exploere.exe,啟動背景為首頁程序界面的WinCE桌面,而后調(diào)用首頁應(yīng)用程序。

        2.2.2 書架程序

        WinCE 提供 txt、html、pdf、doc、ppt等多種格式的閱讀程序,在系統(tǒng)內(nèi)核定制中通過添加組件將這些閱讀程序編譯到WinCE內(nèi)核鏡像中。在書架程序中,讀取Flash和SD卡存儲設(shè)備中存儲的文件信息,對于支持的文件格式將文件名及文件大小等信息顯示在書架界面上;用戶點擊書架上顯示的文檔,根據(jù)擴展名調(diào)用對應(yīng)的閱讀程序閱讀文檔。

        在啟動閱讀程序時,會同時創(chuàng)建一個進程,啟動一個旋轉(zhuǎn)按鈕,附著于閱讀應(yīng)用窗口用來控制屏幕的旋轉(zhuǎn)。圖5為旋轉(zhuǎn)應(yīng)用程序的流程。通過Change-DisplaySettingsEx函數(shù)來調(diào)用顯示驅(qū)動的DrvEscape函數(shù)完成屏幕旋轉(zhuǎn);在進程中,同時創(chuàng)建一個線程用來檢測閱讀程序狀態(tài),當閱讀程序退出時把屏幕旋轉(zhuǎn)到豎屏顯示,保證書架程序正常顯示。

        2.2.3 應(yīng)用擴展

        WinCE內(nèi)核定制后導(dǎo)出的SDK可以提供給用戶或者其他程序開發(fā)人員,使用微軟公司的Visual studio或者Embedded Visual C++開發(fā)工具開發(fā)自己的應(yīng)用程序。在主界面中的“應(yīng)用”就是用來提供給用戶進行應(yīng)用程序擴展的程序。本設(shè)計在SD卡配置文件中添加應(yīng)用程序的名稱、路徑、參數(shù)等信息。應(yīng)用擴展程序被調(diào)用時,讀取該配置文件顯示擴展的應(yīng)用。

        圖5 閱讀器旋轉(zhuǎn)應(yīng)用程序流程

        3 驗 證

        本文驗證平臺采用S3C2416主控制器。S3C2416是三星公司推出的基于ARM926EJ內(nèi)核的32位RISC嵌入式控制器。其運行頻率可以達到400 M Hz,片上集成指令和數(shù)據(jù)分開的16 KBCache、定時器、看門狗以及外圍設(shè)備控制器等;使用6寸電子紙顯示屏,分辨率為 600×800,支持16級灰度和屏幕旋轉(zhuǎn)。

        基于硬件平臺開發(fā)對應(yīng)的BSP,包括Bootloader、設(shè)備驅(qū)動和OAL層。按照設(shè)計需求定制內(nèi)核生成WinCE鏡像,然后導(dǎo)出平臺SDK開發(fā)閱讀器應(yīng)用程序,而后下載到硬件平臺測試運行。圖6為應(yīng)用程序顯示效果,左圖為書架程序,右圖為閱讀程序。

        圖6 書架和閱讀程序顯示效果

        此外,通過實驗計算了系統(tǒng)啟動時間、刷600×800圖片以及旋轉(zhuǎn)屏幕所需的時間。

        3.1 系統(tǒng)啟動時間

        如圖7所示,系統(tǒng)從上電到顯示主界面程序需要25.07s左右。除了硬件初始化、WinCE系統(tǒng)啟動時間以外,用Bootloader從NAND Flash中加載WinCE內(nèi)核到內(nèi)存中將近消耗了14 s。

        本設(shè)計中定制的組件較多,包括Viewer應(yīng)用程序、中文字庫支持、瀏覽器等組件.鏡像大小在26.3MB左右,可以通過生成MultiBin的方法,首先加載WinCE系統(tǒng)必需的組件,其他組件在需要時或者系統(tǒng)啟動后再加載,以改善系統(tǒng)啟動時間。

        圖7 系統(tǒng)啟動時間

        3.2 刷屏時間

        如圖8所示,通過應(yīng)用程序繪制600×800的圖片,刷屏時間大約為739 ms,進行屏幕旋轉(zhuǎn)操作大概需要1 558 ms。其中,屏幕旋轉(zhuǎn)操作時間包括坐標系的旋轉(zhuǎn)、應(yīng)用程序接收到重繪消息進行重新繪圖,以及電子紙控制器對顯存數(shù)據(jù)旋轉(zhuǎn)刷屏的時間,所以時間相對較長。

        圖8 系統(tǒng)刷屏時間

        結(jié) 語

        本文詳細介紹了實現(xiàn)電子紙閱讀器過程中電子紙顯示驅(qū)動和應(yīng)用程序開發(fā)兩個關(guān)鍵問題,并在硬件平臺實現(xiàn)了基于WinCE操作系統(tǒng)的電子紙閱讀器。該電子紙閱讀器支持多種格式閱讀、觸摸屏輸入、PC文件同步傳輸、多種存儲介質(zhì)等功能,具有一定的應(yīng)用價值。

        [1]何宗健.WinCE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.

        [2]辛雁峰,夏海寶,易春海.基于S3C2440移動終端的WinCE開發(fā)[J].微計算機信息,2009,25(3-2):71-73.

        [3]Introduction to WinCE display driver[EB/OL].[2010-04].http://www.xgdown.com/article/175/51890_3.htm.

        [4]Microsoft Corporation.Platform Builder for Microsoft Window CE 5.0 Help,2004.

        [5]Samsung.S3C2416 User's Manual,2008-10.

        猜你喜歡
        閱讀器調(diào)用繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        基于反向權(quán)重的閱讀器防碰撞算法
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        一種高效的RFID系統(tǒng)冗余閱讀器消除算法
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        電子測試(2018年4期)2018-05-09 07:28:32
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        一種RFID網(wǎng)絡(luò)系統(tǒng)中消除冗余閱讀器的高效算法
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        青青青伊人色综合久久亚洲综合| 日韩精品人妻久久久一二三| 国产精品理论片在线观看| 亚洲av美国av产亚洲av图片| 特黄a级毛片免费视频| 国产主播无套内射一区| 91精品国产色综合久久不| 亚洲自拍偷拍一区二区三区| 视频一区视频二区制服丝袜| 日韩亚洲欧美中文在线| 国产人妻黑人一区二区三区 | 国产乱理伦片在线观看| 亚洲国产剧情在线精品视| 全程国语对白资源在线观看| 中国老熟女露脸老女人| 中文字幕色av一区二区三区| 风韵饥渴少妇在线观看| 精品在免费线中文字幕久久| 亚洲一区二区三区视频免费| 亚洲精品有码日本久久久| 99久久婷婷国产综合精品青草免费| 亚洲日本va午夜在线电影| 久久亚洲av成人无码软件| 97超碰国产一区二区三区| 激情亚洲一区国产精品| 正在播放国产多p交换视频| 成全视频高清免费| 亚洲青涩在线不卡av| 亚洲成人精品在线一区二区| 欧美国产亚洲日韩在线二区| 人妻丝袜无码国产一区| 国产美女裸身网站免费观看视频| 亚洲熟女av一区少妇| 亚洲成av人片在线观看| 亚洲人成人网站在线观看| 精品国产AⅤ无码一区二区| 蜜桃av区一区二区三| 日本一区二区视频在线| 天堂中文最新版在线中文| 无码人妻一区二区三区免费n鬼沢| 蜜桃在线观看免费高清完整版|