版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1第9章嵌入式圖形用戶界面編程人機交互界面風格成就作品美譽
。
2本章內(nèi)容9.1嵌入式系統(tǒng)GUI簡介19.2基于Qt的嵌入式GUI應用開發(fā)23簡介本章主要介紹嵌入式Linux圖形用戶界面GUI。為了使讀者對嵌入式Linux系統(tǒng)下的圖形用戶界面有比較全面的認識,首先介紹幾款常見的圖形用戶界面系統(tǒng)(GUI),接下來詳細介紹其中常用的GUI軟件Qt/Embedded,最后結(jié)合“Qt/Embedded編程實例”綜合實訓環(huán)節(jié)詳細講解Qt/Embedded的開發(fā)流程、如何建立開發(fā)環(huán)境以及QT的編譯與移植過程等細節(jié)。49.1嵌入式系統(tǒng)GUI簡介
GUI是GraphicalUserInterface的簡稱,即圖形用戶界面,又稱圖形用戶接口,是指采用圖形方式顯示的嵌入式設備與其用戶之間的對話操作接口界面。圖形用戶界面是嵌入式系統(tǒng)的重要組成部分。與早期計算機使用的枯燥的命令行界面相比,圖形用戶界面極大地方便了非專業(yè)用戶的使用,使得用戶從繁瑣的命令中解脫出來,不再需要死記硬背大量的操作命令,而可以利用菜單、對話框、窗口、按鈕等組件通過友好、直觀、圖形化、易于操作的圖形用戶界面對計算機進行方便、快捷的操作與交流。5GUI系統(tǒng)應穩(wěn)定可靠,響應速度快。嵌入式系統(tǒng)對GUI的穩(wěn)定性和可靠性有嚴格的要求,若GUI導致系統(tǒng)崩潰將導致比PC機宕機更為嚴重的后果,因此嵌入式系統(tǒng)的GUI需要具有更高的穩(wěn)定性和可靠性。此外,嵌入式系統(tǒng)對實時性往往有較高的要求,嵌入式GUI必須具備較快的響應速度。目前幾種成熟的基于Linux系統(tǒng)的嵌入式GUI主要包括MiniGUI、MicroWindows、OpenGUI和Qt/Embedded等。59.1.1MiniGUIMiniGUI是一款為基于Linux的實時嵌入式系統(tǒng)提供一個高級窗口系統(tǒng)和輕量級圖形用戶界面支持系統(tǒng)。MiniGUI是我國自主開發(fā)的著名的自由軟件項目(遵循GPL條款)之一,1998年底由清華大學魏永明主持和開發(fā)并成功應用在一個數(shù)控機床系統(tǒng)中,現(xiàn)由北京飛漫軟件技術(shù)有限公司維護及開展后續(xù)開發(fā)。MiniGUI為嵌入式實時操作系統(tǒng)提供了完善的圖形和圖形用戶界面的支持,運行高效可靠,是一款非常適合于工業(yè)控制實時系統(tǒng)以及嵌入式系統(tǒng)的可定制的、小巧的輕量級圖形用戶界面支持系統(tǒng)。6MiniGUI的主要特色有:遵循GPL(GNUGeneralPublicLicense)條款的純自由軟件。提供了完備的多窗口機制和消息傳遞機制。體積小,占用空間少。支持Windows的資源文件,如位圖、光標、圖標、定時器等。支持Windows的資源文件,如位圖、光標、圖標、定時器等。可配置。可根據(jù)項目的具體需求進行定制配置與編譯。高穩(wěn)定性和高性能。7可移植性好。支持多種常見的圖像文件格式,如BMP、GIF、JPEG、PNG等。支持多字符集和多字體。完整的多窗口系統(tǒng)。完備的圖形功能。完備的圖形用戶界面構(gòu)件(Widget)集。8MiniGUI為嵌入式Linux系統(tǒng)的多進程運行環(huán)境提供了完整的圖形窗口系統(tǒng)支持。為了適應不同的操作系統(tǒng)環(huán)境,可以將MiniGUI配置成MiniGUI-Processes(Lite)、MiniGUI-Threads和MiniGUI-Standalone三種不同的運行模式。9MiniGUI手機特效示例109.1.2Microwindows/Nano-XMicrowindows是一個著名的開放源碼的嵌入式GUI軟件,采用
MPL(Mozilla
PublicLicense)條款發(fā)布,目的是把現(xiàn)代圖形視窗環(huán)境引入到運行Linux的小型設備和平臺上。作為PC機上的XWindow系統(tǒng)的替代品,Microwindows提供了與XWindow相似的功能,但可以使用更少的RAM和文件存儲空間(約為100KB~600KB)。Microwindows的核心基于顯示設備接口,基本上是用C語言實現(xiàn)的,只有部分關鍵代碼使用了匯編語言以提高整體速度,因此Microwindows的可移植性很好。11Microwindows采用了基于客戶機/服務器(Client/Server)的分層設計方法,可以分為三層。在最底層是面向圖形輸出和屏幕、觸摸屏、鼠標以及鍵盤的驅(qū)動程序,它們提供了對實際硬件物理設備的訪問能力;在中間層提供底層硬件的抽象接口,實現(xiàn)了一個可移植的圖形引擎,支持對線的繪制、區(qū)域的填充、多邊形、剪切以及顏色模型等;在最上層提供了兩種流行的圖形編程應用程序接口API。129.1.3OpenGUIOpenGUI主要是為x86硬件平臺開發(fā)的,最初的名字叫FastGL。FastGL是一個跨平臺的32位的圖形庫與圖形用戶界面,它主要用來在開發(fā)圖形應用程序及游戲等。OpenGUI基于用匯編語言實現(xiàn)的x86圖形內(nèi)核,提供了一個快速的面向高層的C/C++圖形接口。OpenGUI能夠在32位計算機的多種操作系統(tǒng)下運行,支持如Linux、DPMI客戶端、MS-DOS和QNX等多種操作系統(tǒng)軟件平臺。13OpenGUI的整體結(jié)構(gòu)可分為三層:最低層是由匯編語言編寫的快速圖形引擎;中間層提供圖形繪制API,包括線條、圓弧、矩形等,并且兼容Borland的BGIAPI;第三層用C++語言編寫,提供了完整的GUI對象庫。OpenGUI為軟件開發(fā)人員提供了簡單的2D繪圖原語、消息驅(qū)動窗口API,支持BMP圖像文件格式。149.1.4Qt/EmbeddedQt/Embedded簡稱QTE,是一個自包含GUI和基于Linux嵌入式平臺的圖形用戶界面開發(fā)工具。Qt/Embedded最早由挪威TrollTech公司開發(fā),是QT專門面向嵌入式系統(tǒng)平臺的版本,有關Qt
的詳細介紹請參考本章9.2小節(jié)。Qt/Embedded主要面向高端手持設備和移動設備等,其豐富的API接口和基于組件的編程模型使得嵌入式Linux下的GUI應用程序開發(fā)非常便捷,導致Qt/Embedded已經(jīng)成為嵌入式系統(tǒng)領域的主要GUI。15Qt/Embedded是一個專門為嵌入式系統(tǒng)提供圖形用戶界面的工具包,為用戶提供了與桌面型QT相似的應用程序接口,不同的是Qt/Embedded已經(jīng)取代了XServer及XLibrary,采用Framebuffer幀緩沖作為底層圖形接口并直接將所有功能都整合在一起。同時,Qt/Embedded將外部輸入設備抽象為keyboard和mouse輸入事件,其應用程序可以直接寫內(nèi)核緩沖幀,避開了開發(fā)者使用繁瑣的Server/Lib系統(tǒng)。Qt/Embedded內(nèi)存消耗比較少,提供了豐富的窗口部件而且支持窗口部件的定制。169.1.5幾種常見嵌入式GUI的對比如果以ARM硬件平臺進行嵌入式高端設備的開發(fā)時,筆者認為不應再考慮OpenGUI和Microwindows。這兩種傳統(tǒng)的GUI系統(tǒng)由于項目規(guī)模較小,系統(tǒng)功能相對薄弱,缺乏等三方開發(fā)軟件的支持,在高端手持或移動終端設備中應用較少。OpenGUI主要是為x86硬件平臺開發(fā)的,很難移植到ARM架構(gòu)上。Microwindows最大的特點在于能提供和XWindow在某種程度上的兼容性,但效率、穩(wěn)定性以及運行速度等方面表現(xiàn)較差。對于另外兩種GUI系統(tǒng),MiniGUI定制能力強,速度快,性能較好;17Qt/Embedded運行速度相對較慢,但對應用軟件的開發(fā)支持好,功能豐富、強大。與其他幾種GUI不同的是,Qt/Embedded的底層圖形引擎采用FrameBuffer,這就注定了它是針對高端嵌入式圖形領域應用而設計的。如果項目開發(fā)的目標是PDA、SmartPhone、車載導航系統(tǒng)之類的高端嵌入式設備,硬件內(nèi)存(32MB以上)和CPU速度都比較充足,可以選擇Qt/Embedded。如果內(nèi)存和CPU運行速度均較低,則選擇開銷較小的MiniGUI較為合適。189.2基于Qt的嵌入式GUI應用開發(fā)Qt最初由挪威TrollTech奇趣科技公司于1995年底推出,是該公司的一個標志性產(chǎn)品。2008年初,TrollTech公司被Nokia收購并更名為QtSoftware,Qt已經(jīng)歸入Nokia旗下。Qt是一個支持多種操作系統(tǒng)平臺的C++應用程序和圖形用戶界面(GUI)開發(fā)框架,用于高性能的跨平臺軟件的開發(fā)。它包括擴展的C++跨平臺類庫、集成開發(fā)工具和跨平臺IDE。除了跨平臺類庫外,Qt還提供了許多可以用來直接快速編寫應用程序的工具。199.2.1Qt概述Qt最初主要是為軟件開發(fā)人員提供一個跨平臺的、統(tǒng)一的圖形用戶編程接口,發(fā)展到現(xiàn)在Qt也提供了網(wǎng)絡和數(shù)據(jù)庫操作方面的編程接口。QT的開發(fā)架構(gòu)如圖9.8所示,QT以開發(fā)工具包的形式提供給開發(fā)人員,具體包括圖形設計器、字體國際化工具、用來為不同平臺和編譯器制作Makefile的工具qmake和Qt的C++類庫等。Qt的C++類庫類似于Windows平臺上的MFC,不同的是Qt的類庫封裝了適應不同操作系統(tǒng)的文件處理、網(wǎng)絡等細節(jié),支持跨平臺運行。20Qt提供了豐富的窗口部件集,具有面向?qū)ο?、易于擴展、真正的組件編程等優(yōu)點,其主要特色包括:(1)優(yōu)良的跨平臺特性,可移植性強(2)Qt使用標準的面向?qū)ο髾C制,支持使用C++進行開發(fā)(3)便利性(4)構(gòu)件支持(5)支持跨平臺的2D和3D圖形渲染,支持OpenGL、SQL和XML21(6)國際化:Qt為本地化應用提供了完善的支持,同時用戶界面文本也可以基于消息翻譯表被翻譯成其他各種語言。(7)友好的聯(lián)機幫助和大量的技術(shù)開發(fā)文檔:Qt提供了大量的聯(lián)機參考文檔,如Networking、XML和database等,初學者可以很方便地按照文檔的介紹,一步一步地學習如何進行Qt編程。(8)Qt的商業(yè)版本Qt企業(yè)版和Qt專業(yè)版可供用戶作商業(yè)軟件的開發(fā)。229.2.2Qt的信號與槽機制信號(signal)與插槽(slot)機制是Qt的核心機制,使用信號與槽進行對象之間的無縫通信是Qt最主要的特性之一,也是Qt與其他工具包的主要區(qū)別。信號與槽是一種高級接口,是Qt自行定義的一種獨立于標準C/C++語言的通信機制,也比其他GUI開發(fā)庫的機制更為簡單靈活。23Qt的信號與槽機制是一種強有力的處理對象間通信的方式,可以完全取代傳統(tǒng)的回調(diào)和消息映射機制。在信號與槽機制中,當一個用戶特定事件發(fā)生時,該對象中的一個或幾個特定信號就被發(fā)射;而槽就是一個返回值類型為void的函數(shù),如果存在一個或幾個槽與該信號相連接,信號被發(fā)射后,與其相關聯(lián)的槽(函數(shù))就會被立刻執(zhí)行,就像一個正常的函數(shù)調(diào)用一樣。信號與槽可以使用任意數(shù)量和任意類型的參數(shù),信號與槽連接之后,槽會在正確的時間使用該信號的參數(shù)而被調(diào)用。信號與槽機制完全獨立于GUI的任何事件循環(huán),且只有當所有的槽返回以后發(fā)射函數(shù)才能返回。249.2.3Qt圖形設計器(QtDesigner)Qt的GUI應用程序編程可以直接采用手工編寫源代碼的方式,也可以基于QtDesigner進行程序設計。直接使用代碼來編寫GUI大型程序無疑是非常痛苦的,好在Qt提供了一個可視化的GUI圖形界面開發(fā)工具Qt圖形設計器(QtDesigner)來加速開發(fā)工作。25Qt設計器的功能十分強大,界面類似于Windows下的VisualStudio的編程,并且它還支持信號和槽機制,以使部件間能夠進行有效的通信。QtDesigner可以用來開發(fā)一個應用程序全部或者部分的界面組件,而且還提供了大量可供編程使用的部件資源。開發(fā)人員既可以創(chuàng)建對話框式的程序,也可以創(chuàng)建帶有菜單、工具欄等部件的主窗口式程序。26Qt設計器利用向?qū)Х绞剑沟貌藛?、工具欄以及?shù)據(jù)庫程序的創(chuàng)建變得快且方便。下面介紹一下QtDesigner的開發(fā)環(huán)境以及使用QtDesigner開發(fā)程序的過程。在Unix或者Linux操作系統(tǒng)下,通過點擊Qt設計器的圖標,或者在終端下進入Qt所在的目錄然后輸入./designer,即可啟動Qt圖形設計器。下圖所示是Qt/X11中自帶的QtDesigner的主窗口。27289.2.4Qt開發(fā)流程1.手工編寫一個main.cpp文件2.通過progen命令生成該程序的工程文件3.修改tmake目錄下linux-arm-g++配置文件4.指定tmake路徑5.部分路徑的設置6.通過tmake自動生成Makefile文件7.運行make命令生成可執(zhí)行文件8.掛載主機9.開發(fā)板上的設置299.2.5建立Qt/Embedded開發(fā)環(huán)境為了建立Qt/Embedded開發(fā)環(huán)境,需要安裝的軟件包資源包括:(1)tmake工具安裝包:tmake-1.13.tar.gz,用來生成和管理Qt/Embedded應用程序的Makefile文件。(2)Qt/Embedded的安裝包:qt-embedded-2.3.10-free.tar.gz,用于Qt/Embedded的安裝。(3)Qt/X11版安裝包:qt-x11-2.3.2.tar.gz,用來產(chǎn)生X11開發(fā)環(huán)境所需的幾個必要的工具,如Designer以及虛擬仿真窗口qvfb。利用qvfb,在不需要實際開發(fā)板的情況下,也可以開發(fā)Qt應用程序。(4)Qtopia安裝包:qtopia-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧園區(qū)設計方案
- 糖尿病飲食處方
- 保護我們的關節(jié)教案反思
- 物聯(lián)網(wǎng)校園門禁系統(tǒng)
- 預防手足口病喜洋洋
- 城市綠化招投標管理策略
- 工業(yè)廠房抹灰施工協(xié)議
- 企業(yè)重組法律顧問管理辦法
- 商業(yè)廣場綠化工程承攬合同
- 國際學校地暖安裝施工協(xié)議
- JGJ48-2014 商店建筑設計規(guī)范
- 電信云網(wǎng)工程師-云網(wǎng)融合(客戶IT上云)備考試題庫(集團網(wǎng)大版)
- 最新實用培訓技巧與方法課件PPT
- 羊頭崗村拆遷安置住宅—3#樓工程試驗方案
- 大同煤業(yè)股份有限公司會計信息披露存在的問題和對策研究論文設計
- 第十二講區(qū)域變質(zhì)巖的鑒定與描述(1)
- 利用Ansoft HFSS仿真軟件實現(xiàn)微帶-波導過渡的設計
- 施工機械應用的不足與改進措施
- 工程施工材料、構(gòu)配件和設備管理制度
- 三類醫(yī)療器械醫(yī)療機構(gòu)規(guī)章管理制度
- 上海版牛津英語5A M2U1 Grandparents教學案例
評論
0/150
提交評論