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