基于Qt/E的嵌入式GUI的研究及其移植
1 引言
圖形用戶界面系統(tǒng)(GUI)是系統(tǒng)級(jí)的底層軟件,它可以和文件系統(tǒng)、操作系統(tǒng)內(nèi)核等一起構(gòu)成一個(gè)完整的操作系統(tǒng)。GUI 為用戶提供了與應(yīng)用系統(tǒng)交互的可視化通道,同時(shí)GUI為程序員提供了一種編程模式,即GUI負(fù)責(zé)系統(tǒng)的可視化界面的生成、管理以及系統(tǒng)與用戶之間的信息交互,而程序員只需專注于對(duì)實(shí)際應(yīng)用的分析。
嵌入式GUI除了以上特點(diǎn),還要求簡單、直觀、可靠、占用資源小且反應(yīng)快速,以適應(yīng)嵌入式系統(tǒng)硬件資源有限的條件。另外,由于嵌入式硬件本身的特殊性,嵌入式GUI應(yīng)具備高度可移植性和可裁剪性,以適應(yīng)不同硬件平臺(tái)的需求。
2 國內(nèi)外幾種嵌入式GUI系統(tǒng)實(shí)現(xiàn)方式與特點(diǎn)
為了適應(yīng)日益擴(kuò)大的嵌入式Linux市場的需求,國內(nèi)外的相關(guān)研究機(jī)構(gòu)和開發(fā)商已經(jīng)或者正在開發(fā)一大批嵌入式圖形系統(tǒng)項(xiàng)目和原型產(chǎn)品。其中較為著名的開放源碼項(xiàng)目有Tiny X(小型的X窗口系統(tǒng))、Microwindows、MiniGUI、Qt/Embedded等。
Tiny X:是標(biāo)準(zhǔn)X-windows在嵌入式系統(tǒng)的小巧實(shí)現(xiàn),作為一個(gè)圖形環(huán)境,X-window是成功的,但由于在體系接口上的原因,限制了它對(duì)游戲、多媒體的支持能力。
Microwindows:典型的基于Server/Clinent體系結(jié)構(gòu)的GUI系統(tǒng),提供了相對(duì)完善的圖形功能和一些高級(jí)的特性,如 Alpha混合、三維支持等。該系統(tǒng)為了提高運(yùn)行速度,也改進(jìn)了基于Socket套接字的X實(shí)現(xiàn)模式,采用了基于消息機(jī)制的Server/Client傳輸機(jī)制。
MiniGUI:由國內(nèi)自由軟件開發(fā)人員設(shè)計(jì)開發(fā),是一種面向嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)的圖形界面支持系統(tǒng)。MiniGUI具有資源消耗小、速度快、效率高的特點(diǎn),但目前還不是很成熟,主要表現(xiàn)在:體系結(jié)構(gòu)不完善,自有圖形引擎的功能較弱,控件的可定制性不好,基于線程機(jī)制的系統(tǒng)脆弱性在復(fù)雜應(yīng)用中更為突出,尤其是缺少一個(gè)方便的圖形開發(fā)環(huán)境。
Qt/Embedded:縮寫為Qt/E,Qt是Trolltech公司的產(chǎn)品,是一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,它注重于給用戶提供精美的圖形用戶界面所需要的所有元素。而且它是基于一種面向?qū)ο蟮乃枷?,所以用戶?duì)其對(duì)象的擴(kuò)展是相當(dāng)容易的,并且他還支持真正的組件編程[1]。這也是本文將要重點(diǎn)介紹的內(nèi)容。
3 Qt/E的介紹及開發(fā)環(huán)境的建立
3.1 Qt/E體系結(jié)構(gòu)
3.1.1 交叉開發(fā)平臺(tái)
Qt是用于本地化跨平臺(tái)應(yīng)用開發(fā)的領(lǐng)先性框架。Qt所有平臺(tái)的API是一致的。這就意味著在一種平臺(tái)上寫的應(yīng)用程序,在新的平臺(tái)上經(jīng)過重新編譯和連接便能運(yùn)行于該新平臺(tái)上。因此,軟件開發(fā)者通過開發(fā)和維護(hù)一種平臺(tái)的應(yīng)用源碼來用于多種平臺(tái)的開發(fā)。同樣,嵌入式Qt也可以移植基于Qt的軟件到嵌入式 Linux中。Qt可提供的平臺(tái),如圖1:
圖1 Qt可提供平臺(tái)
Qt/Windows:用于Microsoft Windows xp、2000、NT4、Me/98。Qt庫使用Windows的GDI API來實(shí)現(xiàn),并且使用微軟的窗口系統(tǒng);Qt/X11:包括Linux、HP-UX、Sun Solaris、Digital UNIX、SGI Irix、IBM AIX等。Qt庫使用X11庫來實(shí)現(xiàn),并且使用X窗口系統(tǒng);Qt/E:包括一個(gè)完整的窗口系統(tǒng),并允許設(shè)計(jì)者輕易地加入各種顯示設(shè)備和硬件輸入設(shè)備(如鼠標(biāo)、鍵盤、觸摸屏等);Qt/Mac:用于Mac OS X平臺(tái)。Qt對(duì)不同平臺(tái)的專門API進(jìn)行了封裝,如文件處理、網(wǎng)絡(luò)(操作,協(xié)議)、進(jìn)程處理、線程、數(shù)據(jù)庫訪問等。
3.1.2 Qt/E的窗口系統(tǒng)
Qt/E的窗口系統(tǒng)采用一種客戶/服務(wù)器體系結(jié)構(gòu),如圖2所示。一個(gè)典型的嵌入式Qt窗口系統(tǒng)一般包括一個(gè)服務(wù)器進(jìn)程、一個(gè)或多個(gè)客戶進(jìn)程(簡稱服務(wù)器和客戶)。服務(wù)器負(fù)責(zé)為客戶和其本身分配顯示區(qū)域、生成鼠標(biāo)和鍵盤事件。而客戶則通過與服務(wù)器通信來申請(qǐng)顯示區(qū)域,接收鼠標(biāo)和鍵盤事件??蛻艨梢灾苯釉L問所分配的顯示區(qū)域,以便為用戶提供GUI服務(wù)。服務(wù)器和客戶通過共享內(nèi)存的方式來傳遞所有分配顯示區(qū)域上的信息。
圖2 Qt/Embedded窗口系統(tǒng)體系結(jié)構(gòu)
評(píng)論