新聞中心

        EEPW首頁 > 嵌入式系統 > DeltaOS 3.0 -簡介(5)

        DeltaOS 3.0 -簡介(5)

        ——
        作者: 時間:2007-03-01 來源:科銀京成 收藏

        DeltaOS的圖形用戶接口(DeltaGUI)是一個支持中文的圖形界面系統,它為構建圖形用戶界面提供了各種類似Windows風格的圖形控件。圖形用戶接口支持DeltaOS/VxWorks/Linux等多種,通過使用圖形用戶接口,開發人員可以在嵌入式電子設備(如工控機,PDA,STB等)上制作出臺式機一樣的圖形界面效果。

        圖:圖形用戶接口體系結構

        為什么選擇圖形用戶接口?

        帶有顯示器的嵌入式設備隨處可見,有的采用小型液晶顯示器,有的采用大尺寸的光柵顯示器,有的要求高分辨率,有的則要把顏色數作為硬指標。不同的應用也有著不同的需求,有些應用要求能夠在屏幕上高效的繪制出各種比例的矢量圖,需要的是豐富的圖形繪制功能,而另一些則要求編寫出復雜華麗的界面,需要的是多種多樣的窗口控件。由于應用需求的側重點各不相同,為了滿足各種嵌入式應用的需求,一套完整的圖形界面系統需要對每一種功能都有全面的支持,這就導致了界面系統體積較大且使用復雜。

        遺憾的是,與傳統的臺式機(PC機)不同,在嵌入式領域同時滿足那么多需求往往需要付出很高的代價。主要原因有三個:

        • 嵌入式設備資源受限,不可能具有傳統臺式機那樣的硬件條件來支持復雜的圖形界面系統。
        • 硬件技術飛速發展,產品豐富多樣,對不同的硬件平臺需要開發不同的圖形界面。即使使用同一套應用界面,移植到不同硬件平臺上也需要付出很大的代價。
        • 開發經驗問題,大部分的程序員熟悉Windows或者X-Window圖形開發環境,熟悉一套全新的開發環境需要花費大量的時間和精力。

        科銀京成推出的圖形用戶接口具有可裁剪、平臺無關性、類Windows風格等特點,解決了上述三個問題,從而降低了開發人員的開發代價。圖形用戶接口是進行嵌入式圖形界面開發的良好選擇。

        增強和改進

        新版本的圖形用戶接口具備如下特點:

        • 支持多任務

        在嵌入式的應用環境中,往往對程序的實時性要求較高,要求在指定的響應時間之內完成相應的任務。嵌入式GUI同樣也面臨著這樣的要求,即要求GUI能夠比較及時的反映狀態的變化(尤其是在一些實時監控領域)。傳統的GUI采用單線程,GUI核心和用戶的應用程序都在一個線程執行,故所有的程序代碼都是順序執行,一旦程序中出現某個比較耗時的操作,則直接導致整個系統響應遲緩。

        上述問題雖然可以靠MVC模式來解決(例如:可以將和顯示無關的操作放入其他線程來執行),但是,采用這種編程方法對應用編寫者的編程能力有相當高的要求。GUI系統應該提供一種方便的機制來解決上述問題。傳統GUI無法解決這些問題,因此提出多任務GUI來實現以上功能。將應用放入不同的線程,則無論其中一個多么繁忙,都不會影響到別的應用的執行。并且對應用編寫者的要求不高,使得他們可以把更多的精力放在業務邏輯的實現方面。

        • 支持克隆、獨立、擴展三種多屏顯示模式。給用戶在顯示設備的數量和擴展上提供更多的選擇。

        什么是克隆多屏顯示模式?

        克隆多屏顯示模式是指在多臺顯示設備上顯示同樣的內容。這一技術在體育場館中有著廣泛的應用。下圖就展示了DeltaOS的圖形用戶接口對克隆多屏顯示的支持:

        什么是獨立多屏顯示模式?

        在同一顯示設備上可以劃分多個獨立子屏,各個子屏之間是相互獨立沒有聯系的。下圖展示了圖形用戶接口對

        什么是擴展多屏顯示模式?

        多屏擴展模式是指單個Windows顯示桌面設置為超寬分辨率,然后橫跨多臺顯示設備顯示。這里講的“擴展”并不是將圖形或象素拉伸變形,相反,每個象素都與普通顯示狀態一樣精細。

        特性

        • 可裁剪,開銷小

        圖形用戶接口以C++類庫的形式提供,只有在應用程序中用到的組件才會被鏈接入最后的二進制代碼中,根據應用的不同,對資源的使用一般從200k到 600k不等。例如,如果使用了所有的圖形組件和國標一、二級點陣字庫(11x11大小),則占用350K左右的資源。如此小的開銷,非常適合需要中文的嵌入式圖形界面。

        • 優越的體系結構

        圖形用戶接口具有平臺無關性,它提供了一個硬件抽象層,使圖形用戶接口與具體硬件相隔離,無需直接和硬件交涉就能輕易掛接到各種輸入、輸出設備上。硬件抽象層以易于理解的面向對象形式提供給驅動開發人員,開發人員根據芯片的編程資料,可以方便地將圖形用戶接口移植到任何帶有輸入輸出設備的平臺。目前,圖形用戶接口已經移植到如下設備上: VGA標準、VESA1.2/2.0/3.0標準的視頻圖形適配器、LCD平板顯示器以及打印機等。支持的輸入設備有:標準的串口鼠標、PS/2鼠標、XT/AT鍵盤以及觸摸屏等。

        • 易于使用

        在概念、原理和風格上,圖形用戶接口采用了與Win32類似的多窗口以及消息驅動機制,窗口類和各種控件的使用方法也與Win32相近。因此,熟悉Windows編程風格的開發人員無需花費太多時間,即可很快掌握圖形用戶接口的編程方法。

        • 提供典型的硬件驅動

        圖形用戶接口提供了多種輸出設備的驅動程序,支持各種規格的LCD、VGA、VESA的顯示。圖形用戶接口提供的輸入設備驅動包括串口鼠標、PS/2鼠標、XT/AT鍵盤、矩陣鍵盤、觸摸屏等的驅動程序。

        • 各種分辨率和顯示模式的支持

        根據應用的需求,圖形用戶接口能夠分別提供支持單色、4色、16色、256色、16位色、24位色以及32位色等顯示模式的類庫。同時,圖形用戶接口還支持各種大小的分辨率,滿足應用的不同需要。

        • 出色的中文支持

        圖形用戶接口支持雙字節字符集的輸入及顯示,能夠顯示各種大小的中文(GB2312)點陣字庫,并配備了全拼、詞組兩種輸入法。如果應用有別的需求,開發人員也可以外掛自己的輸入法及字體。圖形用戶接口 提供了點陣字庫轉換工具,能夠轉換出各種大小的點陣字庫,同時,為了節約存儲空間,該工具帶有自定義小字庫的功能,能夠只生成自己需要的漢字點陣數據。

        • 仿真開發環境

        圖形用戶接口提供了仿真開發環境,可脫離目標機環境編程和運行。所謂仿真開發,實際就是讓圖形用戶接口的應用程序在Windows平臺上運行。開發人員可直接使用Windows上提供的Microsoft Visual C++工具來編譯和調試自己的應用程序,以加快代碼編寫和調試的速度。在仿真開發環境下編寫的應用程序代碼,幾乎不用任何改動,只要加上目標機硬件驅動程序,編譯后即可直接放到目標機上運行。

        • 良好的服務

        科銀京成的開發團隊在觸摸屏驅動、鼠標驅動(包含硬件鼠標)、視頻硬件加速、漢字輸入、手寫體識別、圖形縮放(包括軟硬件縮放)、圖形平滑滾動等技術方面積累了大量的經驗,能夠結合嵌入式設備的具體硬件情況,提供全面的技術支持,指導應用開發者更高效地設計圖形用戶界面。

        基本規格

        • 基本元素
        • 圖形用戶接口 提供外觀類似 Windows 的圖形接口基本元素,包括:
        • 窗口
        • 對話框
        • 菜單
        • 按鈕 ( 命令按鈕、單選框、復選框 )
        • 文本框
        • 滾動條
        • 進度條
        • 提供類似 Windows 的消息處理機制,最多可同時存放 40 條消息。
        • 支持常見圖形文件格式為 BMP ( Windows )、 GIF (87a、89a)、 JPG ( 1.x )。
        • 完整的中文支持,提供國標一二級字庫和全拼、詞組兩種中文輸入法,字庫和輸入法均可由用戶根據需求自行擴展。
        • 資源占用情況
          • 內存(堆)

        圖形用戶接口應用程序在運行時需要動態分配的內存主要包括:

        • 顯示驅動程序所分配的脫屏( Off-Screen)顯示緩沖區。
        • 一般由圖形模式分辨率和顏色深度決定。例如, 640 x 480 x 256色顯示模式下,一個像素占用一個(8位)字節,則所需的脫屏顯示緩沖區大小為640 x 480=307200字節,即大約300K字節。
        • 各種動態創建的 GUI對象(消息、控件、窗口等)自身所占用的內存。
        • 視各種對象自身復雜程度而定,每個對象占用的內存從數十字節到數 K字節不等。
        • 各種動態創建的數據對象所占用的內存。

        如編輯框所分配的文本緩沖區、圖形處理類所分配的位圖對象等,這類對象占用的內存由用戶需求而定。例如,如果用戶需要在內存中處理一幅 1024 x 768 x 65536色的位圖,就需要約1.5M字節的內存。

        圖形用戶接口 只在棧上創建少量局部變量(含簡單數據對象),參數傳遞時也只使用指針來傳遞 GUI 對象。因此一般情況下 圖形用戶接口 僅占用不到 1K 字節的棧空間。

        • 裁減情況

        圖形用戶接口 以 C++ 類庫的形式提供,只有在應用程序中用到的組件才會被鏈接入最后的二進制代碼中,因此,組件的裁剪是自動完成的,無需用戶干涉。

        典型裁剪情況如下表所示(其中字庫指 11x11 的點陣字庫):

        組件使用情況

        代碼段大小

        數據段大小

        共計

        所有圖形組件
        國標一、二級字庫
        全拼中文輸入法及碼表

        約 220K 字節

        約 300K 字節

        約 520K 字節

        所有圖形組件
        國標一、二級字庫

        約 200K 字節

        約 160K 字節

        約 360K 字節

         

        典型性能指標

        測試環境:

        賽揚800M處理器

        內存256M

        8位GUI組件庫

        測試內容

        測試結果(ms/個)

        創建窗口

        (寬:500,高:300,帶標題欄狀態欄裝飾窗口)

        14.617

        銷毀窗口

        (寬:500,高:300,帶標題欄狀態欄裝飾窗口)

        33.31

        畫點

        49.767

        畫對角線(1024



        評論


        相關推薦

        技術專區

        主站蜘蛛池模板: 岳池县| 清新县| 汉寿县| 广水市| 丹寨县| 元氏县| 天峨县| 塘沽区| 永定县| 丹江口市| 广河县| 芜湖县| 莱芜市| 什邡市| 宣汉县| 宜宾县| 卫辉市| 巴东县| 长沙市| 宁德市| 扎兰屯市| 双鸭山市| 江阴市| 安泽县| 仲巴县| 汝阳县| 淮南市| 宜兰市| 六枝特区| 阜南县| 永仁县| 汨罗市| 石柱| 嘉兴市| 阿勒泰市| 安庆市| 曲阜市| 屏山县| 昂仁县| 蒲城县| 区。|
        <strike id="e0a02"><input id="e0a02"></input></strike>
        • <fieldset id="e0a02"><menu id="e0a02"></menu></fieldset>
        • <fieldset id="e0a02"><menu id="e0a02"></menu></fieldset>
        • <blockquote id="e0a02"></blockquote>
        • <fieldset id="e0a02"><menu id="e0a02"></menu></fieldset>