• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2010-09-25 02:58:38李慶誠劉建志
      關鍵詞:閱讀器調用繪圖

      李慶誠,劉建志

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

      引 言

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

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

      1 WinCE系統(tǒng)架構

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

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

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

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

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

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

      2 關鍵問題解決

      2.1 電子紙顯示驅動

      WinCE顯示驅動由 GWES.exe加載管理,通過WinCE內核的一個組件GDI(Graphics Device Interface)加載調用顯示驅動。應用程序通過GDI組件調用顯示驅動,并在電子紙上顯示。

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

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

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

      WinCE電子紙顯示驅動主要包括設備初始化、刷屏機制和旋轉支持3個部分。

      2.1.1 設備初始化

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

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

      2.1.2 刷屏機制

      顯示驅動被GWES.exe加載后,當應用程序第一次有繪圖請求時,調用DispDrvrDirtyRectDump函數。具體流程如圖2所示。

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

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

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

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

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

      2.1.3 旋轉支持

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

      2.2 應用程序開發(fā)

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

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

      圖4 應用程序

      2.2.1 主界面程序

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

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

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

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

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

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

      2.2.2 書架程序

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

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

      2.2.3 應用擴展

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

      圖5 閱讀器旋轉應用程序流程

      3 驗 證

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

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

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

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

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

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

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

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

      3.2 刷屏時間

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

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

      結 語

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

      [1]何宗健.WinCE嵌入式系統(tǒng)[M].北京:北京航空航天大學出版社,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.

      猜你喜歡
      閱讀器調用繪圖
      來自河流的你
      中國三峽(2022年7期)2022-12-02 05:28:02
      “禾下乘涼圖”繪圖人
      學與玩(2022年10期)2022-11-23 08:31:08
      基于反向權重的閱讀器防碰撞算法
      核電項目物項調用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調用
      測控技術(2018年5期)2018-12-09 09:04:46
      一種高效的RFID系統(tǒng)冗余閱讀器消除算法
      基于HTML5 Canvas繪圖技術應用
      電子測試(2018年4期)2018-05-09 07:28:32
      基于系統(tǒng)調用的惡意軟件檢測技術研究
      一種RFID網絡系統(tǒng)中消除冗余閱讀器的高效算法
      Surfer和ArcView結合在氣象繪圖中的應用
      河北遙感(2015年2期)2015-07-18 11:11:14
      尚志市| 留坝县| 景洪市| 宣汉县| 千阳县| 夹江县| 东安县| 龙江县| 北安市| 泸水县| 菏泽市| 綦江县| 张家港市| 合阳县| 潼南县| 衡南县| 玉田县| 石台县| 麟游县| 浦北县| 涿州市| 昔阳县| 大兴区| 苏尼特右旗| 嵊泗县| 衡山县| 肇东市| 尼玛县| 乐亭县| 潮安县| 定结县| 赣榆县| 元谋县| 天镇县| 德清县| 洱源县| 静海县| 巴林右旗| 章丘市| 信阳市| 钟山县|