DeltaOS 3.0 -簡(jiǎn)介(5)
DeltaOS的圖形用戶(hù)接口(DeltaGUI)是一個(gè)支持中文的圖形界面系統,它為構建圖形用戶(hù)界面提供了各種類(lèi)似Windows風(fēng)格的圖形控件。圖形用戶(hù)接口支持DeltaOS/VxWorks/Linux等多種嵌入式操作系統,通過(guò)使用圖形用戶(hù)接口,開(kāi)發(fā)人員可以在嵌入式電子設備(如工控機,PDA,STB等)上制作出臺式機一樣的圖形界面效果。
圖:圖形用戶(hù)接口體系結構
為什么選擇圖形用戶(hù)接口?
帶有顯示器的嵌入式設備隨處可見(jiàn),有的采用小型液晶顯示器,有的采用大尺寸的光柵顯示器,有的要求高分辨率,有的則要把顏色數作為硬指標。不同的應用也有著(zhù)不同的需求,有些應用要求能夠在屏幕上高效的繪制出各種比例的矢量圖,需要的是豐富的圖形繪制功能,而另一些則要求編寫(xiě)出復雜華麗的界面,需要的是多種多樣的窗口控件。由于應用需求的側重點(diǎn)各不相同,為了滿(mǎn)足各種嵌入式應用的需求,一套完整的圖形界面系統需要對每一種功能都有全面的支持,這就導致了界面系統體積較大且使用復雜。
遺憾的是,與傳統的臺式機(PC機)不同,在嵌入式領(lǐng)域同時(shí)滿(mǎn)足那么多需求往往需要付出很高的代價(jià)。主要原因有三個(gè):
- 嵌入式設備資源受限,不可能具有傳統臺式機那樣的硬件條件來(lái)支持復雜的圖形界面系統。
- 硬件技術(shù)飛速發(fā)展,產(chǎn)品豐富多樣,對不同的硬件平臺需要開(kāi)發(fā)不同的圖形界面。即使使用同一套應用界面,移植到不同硬件平臺上也需要付出很大的代價(jià)。
- 開(kāi)發(fā)經(jīng)驗問(wèn)題,大部分的程序員熟悉Windows或者X-Window圖形開(kāi)發(fā)環(huán)境,熟悉一套全新的開(kāi)發(fā)環(huán)境需要花費大量的時(shí)間和精力。
科銀京成推出的圖形用戶(hù)接口具有可裁剪、平臺無(wú)關(guān)性、類(lèi)Windows風(fēng)格等特點(diǎn),解決了上述三個(gè)問(wèn)題,從而降低了開(kāi)發(fā)人員的開(kāi)發(fā)代價(jià)。圖形用戶(hù)接口是進(jìn)行嵌入式圖形界面開(kāi)發(fā)的良好選擇。
增強和改進(jìn)
新版本的圖形用戶(hù)接口具備如下特點(diǎn):
- 支持多任務(wù)
在嵌入式的應用環(huán)境中,往往對程序的實(shí)時(shí)性要求較高,要求在指定的響應時(shí)間之內完成相應的任務(wù)。嵌入式GUI同樣也面臨著(zhù)這樣的要求,即要求GUI能夠比較及時(shí)的反映狀態(tài)的變化(尤其是在一些實(shí)時(shí)監控領(lǐng)域)。傳統的GUI采用單線(xiàn)程,GUI核心和用戶(hù)的應用程序都在一個(gè)線(xiàn)程執行,故所有的程序代碼都是順序執行,一旦程序中出現某個(gè)比較耗時(shí)的操作,則直接導致整個(gè)系統響應遲緩。
上述問(wèn)題雖然可以靠MVC模式來(lái)解決(例如:可以將和顯示無(wú)關(guān)的操作放入其他線(xiàn)程來(lái)執行),但是,采用這種編程方法對應用編寫(xiě)者的編程能力有相當高的要求。GUI系統應該提供一種方便的機制來(lái)解決上述問(wèn)題。傳統GUI無(wú)法解決這些問(wèn)題,因此提出多任務(wù)GUI來(lái)實(shí)現以上功能。將應用放入不同的線(xiàn)程,則無(wú)論其中一個(gè)多么繁忙,都不會(huì )影響到別的應用的執行。并且對應用編寫(xiě)者的要求不高,使得他們可以把更多的精力放在業(yè)務(wù)邏輯的實(shí)現方面。
- 支持克隆、獨立、擴展三種多屏顯示模式。給用戶(hù)在顯示設備的數量和擴展上提供更多的選擇。
什么是克隆多屏顯示模式?
克隆多屏顯示模式是指在多臺顯示設備上顯示同樣的內容。這一技術(shù)在體育場(chǎng)館中有著(zhù)廣泛的應用。下圖就展示了DeltaOS的圖形用戶(hù)接口對克隆多屏顯示的支持:
什么是獨立多屏顯示模式?
在同一顯示設備上可以劃分多個(gè)獨立子屏,各個(gè)子屏之間是相互獨立沒(méi)有聯(lián)系的。下圖展示了圖形用戶(hù)接口對
什么是擴展多屏顯示模式?
多屏擴展模式是指單個(gè)Windows顯示桌面設置為超寬分辨率,然后橫跨多臺顯示設備顯示。這里講的“擴展”并不是將圖形或象素拉伸變形,相反,每個(gè)象素都與普通顯示狀態(tài)一樣精細。
特性
- 可裁剪,開(kāi)銷(xiāo)小
圖形用戶(hù)接口以C++類(lèi)庫的形式提供,只有在應用程序中用到的組件才會(huì )被鏈接入最后的二進(jìn)制代碼中,根據應用的不同,對資源的使用一般從200k到 600k不等。例如,如果使用了所有的圖形組件和國標一、二級點(diǎn)陣字庫(11x11大?。?,則占用350K左右的資源。如此小的開(kāi)銷(xiāo),非常適合需要中文的嵌入式圖形界面。
- 優(yōu)越的體系結構
圖形用戶(hù)接口具有平臺無(wú)關(guān)性,它提供了一個(gè)硬件抽象層,使圖形用戶(hù)接口與具體硬件相隔離,無(wú)需直接和硬件交涉就能輕易掛接到各種輸入、輸出設備上。硬件抽象層以易于理解的面向對象形式提供給驅動(dòng)開(kāi)發(fā)人員,開(kāi)發(fā)人員根據芯片的編程資料,可以方便地將圖形用戶(hù)接口移植到任何帶有輸入輸出設備的平臺。目前,圖形用戶(hù)接口已經(jīng)移植到如下設備上: VGA標準、VESA1.2/2.0/3.0標準的視頻圖形適配器、LCD平板顯示器以及打印機等。支持的輸入設備有:標準的串口鼠標、PS/2鼠標、XT/AT鍵盤(pán)以及觸摸屏等。
- 易于使用
在概念、原理和風(fēng)格上,圖形用戶(hù)接口采用了與Win32類(lèi)似的多窗口以及消息驅動(dòng)機制,窗口類(lèi)和各種控件的使用方法也與Win32相近。因此,熟悉Windows編程風(fēng)格的開(kāi)發(fā)人員無(wú)需花費太多時(shí)間,即可很快掌握圖形用戶(hù)接口的編程方法。
- 提供典型的硬件驅動(dòng)
圖形用戶(hù)接口提供了多種輸出設備的驅動(dòng)程序,支持各種規格的LCD、VGA、VESA的顯示。圖形用戶(hù)接口提供的輸入設備驅動(dòng)包括串口鼠標、PS/2鼠標、XT/AT鍵盤(pán)、矩陣鍵盤(pán)、觸摸屏等的驅動(dòng)程序。
- 各種分辨率和顯示模式的支持
根據應用的需求,圖形用戶(hù)接口能夠分別提供支持單色、4色、16色、256色、16位色、24位色以及32位色等顯示模式的類(lèi)庫。同時(shí),圖形用戶(hù)接口還支持各種大小的分辨率,滿(mǎn)足應用的不同需要。
- 出色的中文支持
圖形用戶(hù)接口支持雙字節字符集的輸入及顯示,能夠顯示各種大小的中文(GB2312)點(diǎn)陣字庫,并配備了全拼、詞組兩種輸入法。如果應用有別的需求,開(kāi)發(fā)人員也可以外掛自己的輸入法及字體。圖形用戶(hù)接口 提供了點(diǎn)陣字庫轉換工具,能夠轉換出各種大小的點(diǎn)陣字庫,同時(shí),為了節約存儲空間,該工具帶有自定義小字庫的功能,能夠只生成自己需要的漢字點(diǎn)陣數據。
- 仿真開(kāi)發(fā)環(huán)境
圖形用戶(hù)接口提供了仿真開(kāi)發(fā)環(huán)境,可脫離目標機環(huán)境編程和運行。所謂仿真開(kāi)發(fā),實(shí)際就是讓圖形用戶(hù)接口的應用程序在Windows平臺上運行。開(kāi)發(fā)人員可直接使用Windows上提供的Microsoft Visual C++工具來(lái)編譯和調試自己的應用程序,以加快代碼編寫(xiě)和調試的速度。在仿真開(kāi)發(fā)環(huán)境下編寫(xiě)的應用程序代碼,幾乎不用任何改動(dòng),只要加上目標機硬件驅動(dòng)程序,編譯后即可直接放到目標機上運行。
- 良好的服務(wù)
科銀京成的開(kāi)發(fā)團隊在觸摸屏驅動(dòng)、鼠標驅動(dòng)(包含硬件鼠標)、視頻硬件加速、漢字輸入、手寫(xiě)體識別、圖形縮放(包括軟硬件縮放)、圖形平滑滾動(dòng)等技術(shù)方面積累了大量的經(jīng)驗,能夠結合嵌入式設備的具體硬件情況,提供全面的技術(shù)支持,指導應用開(kāi)發(fā)者更高效地設計圖形用戶(hù)界面。
基本規格
- 基本元素
- 圖形用戶(hù)接口 提供外觀(guān)類(lèi)似 Windows 的圖形接口基本元素,包括:
- 窗口
- 對話(huà)框
- 菜單
- 按鈕 ( 命令按鈕、單選框、復選框 )
- 文本框
- 滾動(dòng)條
- 進(jìn)度條
- 提供類(lèi)似 Windows 的消息處理機制,最多可同時(shí)存放 40 條消息。
- 支持常見(jiàn)圖形文件格式為 BMP ( Windows )、 GIF (87a、89a)、 JPG ( 1.x )。
- 完整的中文支持,提供國標一二級字庫和全拼、詞組兩種中文輸入法,字庫和輸入法均可由用戶(hù)根據需求自行擴展。
- 資源占用情況
- 內存(堆)
圖形用戶(hù)接口應用程序在運行時(shí)需要動(dòng)態(tài)分配的內存主要包括:
- 顯示驅動(dòng)程序所分配的脫屏( Off-Screen)顯示緩沖區。
- 一般由圖形模式分辨率和顏色深度決定。例如, 640 x 480 x 256色顯示模式下,一個(gè)像素占用一個(gè)(8位)字節,則所需的脫屏顯示緩沖區大小為640 x 480=307200字節,即大約300K字節。
- 各種動(dòng)態(tài)創(chuàng )建的 GUI對象(消息、控件、窗口等)自身所占用的內存。
- 視各種對象自身復雜程度而定,每個(gè)對象占用的內存從數十字節到數 K字節不等。
- 各種動(dòng)態(tài)創(chuàng )建的數據對象所占用的內存。
如編輯框所分配的文本緩沖區、圖形處理類(lèi)所分配的位圖對象等,這類(lèi)對象占用的內存由用戶(hù)需求而定。例如,如果用戶(hù)需要在內存中處理一幅 1024 x 768 x 65536色的位圖,就需要約1.5M字節的內存。
- 棧
圖形用戶(hù)接口 只在棧上創(chuàng )建少量局部變量(含簡(jiǎn)單數據對象),參數傳遞時(shí)也只使用指針來(lái)傳遞 GUI 對象。因此一般情況下 圖形用戶(hù)接口 僅占用不到 1K 字節的??臻g。
- 裁減情況
圖形用戶(hù)接口 以 C++ 類(lèi)庫的形式提供,只有在應用程序中用到的組件才會(huì )被鏈接入最后的二進(jìn)制代碼中,因此,組件的裁剪是自動(dòng)完成的,無(wú)需用戶(hù)干涉。
典型裁剪情況如下表所示(其中字庫指 11x11 的點(diǎn)陣字庫):
組件使用情況 |
代碼段大小 |
數據段大小 |
共計 |
所有圖形組件 |
約 220K 字節 |
約 300K 字節 |
約 520K 字節 |
所有圖形組件 |
約 200K 字節 |
約 160K 字節 |
約 360K 字節 |
典型性能指標
測試環(huán)境:
賽揚800M處理器
內存256M
8位GUI組件庫
測試內容 |
測試結果(ms/個(gè)) |
創(chuàng )建窗口 (寬:500,高:300,帶標題欄狀態(tài)欄裝飾窗口) |
14.617 |
銷(xiāo)毀窗口 (寬:500,高:300,帶標題欄狀態(tài)欄裝飾窗口) |
33.31 |
畫(huà)點(diǎn) |
49.767 |
畫(huà)對角線(xiàn)(1024 關(guān)鍵詞:
嵌入式操作系統
嵌專(zhuān)題delta
相關(guān)推薦
技術(shù)專(zhuān)區
|
評論