嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第9章_第1頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第9章_第2頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第9章_第3頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第9章_第4頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第9章_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1第9章嵌入式圖形用戶界面編程人機(jī)交互界面風(fēng)格成就作品美譽(yù)

2本章內(nèi)容9.1嵌入式系統(tǒng)GUI簡(jiǎn)介19.2基于Qt的嵌入式GUI應(yīng)用開(kāi)發(fā)23簡(jiǎn)介本章主要介紹嵌入式Linux圖形用戶界面GUI。為了使讀者對(duì)嵌入式Linux系統(tǒng)下的圖形用戶界面有比較全面的認(rèn)識(shí),首先介紹幾款常見(jiàn)的圖形用戶界面系統(tǒng)(GUI),接下來(lái)詳細(xì)介紹其中常用的GUI軟件Qt/Embedded,最后結(jié)合“Qt/Embedded編程實(shí)例”綜合實(shí)訓(xùn)環(huán)節(jié)詳細(xì)講解Qt/Embedded的開(kāi)發(fā)流程、如何建立開(kāi)發(fā)環(huán)境以及QT的編譯與移植過(guò)程等細(xì)節(jié)。49.1嵌入式系統(tǒng)GUI簡(jiǎn)介

GUI是GraphicalUserInterface的簡(jiǎn)稱(chēng),即圖形用戶界面,又稱(chēng)圖形用戶接口,是指采用圖形方式顯示的嵌入式設(shè)備與其用戶之間的對(duì)話操作接口界面。圖形用戶界面是嵌入式系統(tǒng)的重要組成部分。與早期計(jì)算機(jī)使用的枯燥的命令行界面相比,圖形用戶界面極大地方便了非專(zhuān)業(yè)用戶的使用,使得用戶從繁瑣的命令中解脫出來(lái),不再需要死記硬背大量的操作命令,而可以利用菜單、對(duì)話框、窗口、按鈕等組件通過(guò)友好、直觀、圖形化、易于操作的圖形用戶界面對(duì)計(jì)算機(jī)進(jìn)行方便、快捷的操作與交流。5GUI系統(tǒng)應(yīng)穩(wěn)定可靠,響應(yīng)速度快。嵌入式系統(tǒng)對(duì)GUI的穩(wěn)定性和可靠性有嚴(yán)格的要求,若GUI導(dǎo)致系統(tǒng)崩潰將導(dǎo)致比PC機(jī)宕機(jī)更為嚴(yán)重的后果,因此嵌入式系統(tǒng)的GUI需要具有更高的穩(wěn)定性和可靠性。此外,嵌入式系統(tǒng)對(duì)實(shí)時(shí)性往往有較高的要求,嵌入式GUI必須具備較快的響應(yīng)速度。目前幾種成熟的基于Linux系統(tǒng)的嵌入式GUI主要包括MiniGUI、MicroWindows、OpenGUI和Qt/Embedded等。59.1.1MiniGUIMiniGUI是一款為基于Linux的實(shí)時(shí)嵌入式系統(tǒng)提供一個(gè)高級(jí)窗口系統(tǒng)和輕量級(jí)圖形用戶界面支持系統(tǒng)。MiniGUI是我國(guó)自主開(kāi)發(fā)的著名的自由軟件項(xiàng)目(遵循GPL條款)之一,1998年底由清華大學(xué)魏永明主持和開(kāi)發(fā)并成功應(yīng)用在一個(gè)數(shù)控機(jī)床系統(tǒng)中,現(xiàn)由北京飛漫軟件技術(shù)有限公司維護(hù)及開(kāi)展后續(xù)開(kāi)發(fā)。MiniGUI為嵌入式實(shí)時(shí)操作系統(tǒng)提供了完善的圖形和圖形用戶界面的支持,運(yùn)行高效可靠,是一款非常適合于工業(yè)控制實(shí)時(shí)系統(tǒng)以及嵌入式系統(tǒng)的可定制的、小巧的輕量級(jí)圖形用戶界面支持系統(tǒng)。6MiniGUI的主要特色有:遵循GPL(GNUGeneralPublicLicense)條款的純自由軟件。提供了完備的多窗口機(jī)制和消息傳遞機(jī)制。體積小,占用空間少。支持Windows的資源文件,如位圖、光標(biāo)、圖標(biāo)、定時(shí)器等。支持Windows的資源文件,如位圖、光標(biāo)、圖標(biāo)、定時(shí)器等??膳渲???筛鶕?jù)項(xiàng)目的具體需求進(jìn)行定制配置與編譯。高穩(wěn)定性和高性能。7可移植性好。支持多種常見(jiàn)的圖像文件格式,如BMP、GIF、JPEG、PNG等。支持多字符集和多字體。完整的多窗口系統(tǒng)。完備的圖形功能。完備的圖形用戶界面構(gòu)件(Widget)集。8MiniGUI為嵌入式Linux系統(tǒng)的多進(jìn)程運(yùn)行環(huán)境提供了完整的圖形窗口系統(tǒng)支持。為了適應(yīng)不同的操作系統(tǒng)環(huán)境,可以將MiniGUI配置成MiniGUI-Processes(Lite)、MiniGUI-Threads和MiniGUI-Standalone三種不同的運(yùn)行模式。9MiniGUI手機(jī)特效示例109.1.2Microwindows/Nano-XMicrowindows是一個(gè)著名的開(kāi)放源碼的嵌入式GUI軟件,采用

MPL(Mozilla

PublicLicense)條款發(fā)布,目的是把現(xiàn)代圖形視窗環(huán)境引入到運(yùn)行Linux的小型設(shè)備和平臺(tái)上。作為PC機(jī)上的XWindow系統(tǒng)的替代品,Microwindows提供了與XWindow相似的功能,但可以使用更少的RAM和文件存儲(chǔ)空間(約為100KB~600KB)。Microwindows的核心基于顯示設(shè)備接口,基本上是用C語(yǔ)言實(shí)現(xiàn)的,只有部分關(guān)鍵代碼使用了匯編語(yǔ)言以提高整體速度,因此Microwindows的可移植性很好。11Microwindows采用了基于客戶機(jī)/服務(wù)器(Client/Server)的分層設(shè)計(jì)方法,可以分為三層。在最底層是面向圖形輸出和屏幕、觸摸屏、鼠標(biāo)以及鍵盤(pán)的驅(qū)動(dòng)程序,它們提供了對(duì)實(shí)際硬件物理設(shè)備的訪問(wèn)能力;在中間層提供底層硬件的抽象接口,實(shí)現(xiàn)了一個(gè)可移植的圖形引擎,支持對(duì)線的繪制、區(qū)域的填充、多邊形、剪切以及顏色模型等;在最上層提供了兩種流行的圖形編程應(yīng)用程序接口API。129.1.3OpenGUIOpenGUI主要是為x86硬件平臺(tái)開(kāi)發(fā)的,最初的名字叫FastGL。FastGL是一個(gè)跨平臺(tái)的32位的圖形庫(kù)與圖形用戶界面,它主要用來(lái)在開(kāi)發(fā)圖形應(yīng)用程序及游戲等。OpenGUI基于用匯編語(yǔ)言實(shí)現(xiàn)的x86圖形內(nèi)核,提供了一個(gè)快速的面向高層的C/C++圖形接口。OpenGUI能夠在32位計(jì)算機(jī)的多種操作系統(tǒng)下運(yùn)行,支持如Linux、DPMI客戶端、MS-DOS和QNX等多種操作系統(tǒng)軟件平臺(tái)。13OpenGUI的整體結(jié)構(gòu)可分為三層:最低層是由匯編語(yǔ)言編寫(xiě)的快速圖形引擎;中間層提供圖形繪制API,包括線條、圓弧、矩形等,并且兼容Borland的BGIAPI;第三層用C++語(yǔ)言編寫(xiě),提供了完整的GUI對(duì)象庫(kù)。OpenGUI為軟件開(kāi)發(fā)人員提供了簡(jiǎn)單的2D繪圖原語(yǔ)、消息驅(qū)動(dòng)窗口API,支持BMP圖像文件格式。149.1.4Qt/EmbeddedQt/Embedded簡(jiǎn)稱(chēng)QTE,是一個(gè)自包含GUI和基于Linux嵌入式平臺(tái)的圖形用戶界面開(kāi)發(fā)工具。Qt/Embedded最早由挪威TrollTech公司開(kāi)發(fā),是QT專(zhuān)門(mén)面向嵌入式系統(tǒng)平臺(tái)的版本,有關(guān)Qt

的詳細(xì)介紹請(qǐng)參考本章9.2小節(jié)。Qt/Embedded主要面向高端手持設(shè)備和移動(dòng)設(shè)備等,其豐富的API接口和基于組件的編程模型使得嵌入式Linux下的GUI應(yīng)用程序開(kāi)發(fā)非常便捷,導(dǎo)致Qt/Embedded已經(jīng)成為嵌入式系統(tǒng)領(lǐng)域的主要GUI。15Qt/Embedded是一個(gè)專(zhuān)門(mén)為嵌入式系統(tǒng)提供圖形用戶界面的工具包,為用戶提供了與桌面型QT相似的應(yīng)用程序接口,不同的是Qt/Embedded已經(jīng)取代了XServer及XLibrary,采用Framebuffer幀緩沖作為底層圖形接口并直接將所有功能都整合在一起。同時(shí),Qt/Embedded將外部輸入設(shè)備抽象為keyboard和mouse輸入事件,其應(yīng)用程序可以直接寫(xiě)內(nèi)核緩沖幀,避開(kāi)了開(kāi)發(fā)者使用繁瑣的Server/Lib系統(tǒng)。Qt/Embedded內(nèi)存消耗比較少,提供了豐富的窗口部件而且支持窗口部件的定制。169.1.5幾種常見(jiàn)嵌入式GUI的對(duì)比如果以ARM硬件平臺(tái)進(jìn)行嵌入式高端設(shè)備的開(kāi)發(fā)時(shí),筆者認(rèn)為不應(yīng)再考慮OpenGUI和Microwindows。這兩種傳統(tǒng)的GUI系統(tǒng)由于項(xiàng)目規(guī)模較小,系統(tǒng)功能相對(duì)薄弱,缺乏等三方開(kāi)發(fā)軟件的支持,在高端手持或移動(dòng)終端設(shè)備中應(yīng)用較少。OpenGUI主要是為x86硬件平臺(tái)開(kāi)發(fā)的,很難移植到ARM架構(gòu)上。Microwindows最大的特點(diǎn)在于能提供和XWindow在某種程度上的兼容性,但效率、穩(wěn)定性以及運(yùn)行速度等方面表現(xiàn)較差。對(duì)于另外兩種GUI系統(tǒng),MiniGUI定制能力強(qiáng),速度快,性能較好;17Qt/Embedded運(yùn)行速度相對(duì)較慢,但對(duì)應(yīng)用軟件的開(kāi)發(fā)支持好,功能豐富、強(qiáng)大。與其他幾種GUI不同的是,Qt/Embedded的底層圖形引擎采用FrameBuffer,這就注定了它是針對(duì)高端嵌入式圖形領(lǐng)域應(yīng)用而設(shè)計(jì)的。如果項(xiàng)目開(kāi)發(fā)的目標(biāo)是PDA、SmartPhone、車(chē)載導(dǎo)航系統(tǒng)之類(lèi)的高端嵌入式設(shè)備,硬件內(nèi)存(32MB以上)和CPU速度都比較充足,可以選擇Qt/Embedded。如果內(nèi)存和CPU運(yùn)行速度均較低,則選擇開(kāi)銷(xiāo)較小的MiniGUI較為合適。189.2基于Qt的嵌入式GUI應(yīng)用開(kāi)發(fā)Qt最初由挪威TrollTech奇趣科技公司于1995年底推出,是該公司的一個(gè)標(biāo)志性產(chǎn)品。2008年初,TrollTech公司被Nokia收購(gòu)并更名為QtSoftware,Qt已經(jīng)歸入Nokia旗下。Qt是一個(gè)支持多種操作系統(tǒng)平臺(tái)的C++應(yīng)用程序和圖形用戶界面(GUI)開(kāi)發(fā)框架,用于高性能的跨平臺(tái)軟件的開(kāi)發(fā)。它包括擴(kuò)展的C++跨平臺(tái)類(lèi)庫(kù)、集成開(kāi)發(fā)工具和跨平臺(tái)IDE。除了跨平臺(tái)類(lèi)庫(kù)外,Qt還提供了許多可以用來(lái)直接快速編寫(xiě)應(yīng)用程序的工具。199.2.1Qt概述Qt最初主要是為軟件開(kāi)發(fā)人員提供一個(gè)跨平臺(tái)的、統(tǒng)一的圖形用戶編程接口,發(fā)展到現(xiàn)在Qt也提供了網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)操作方面的編程接口。QT的開(kāi)發(fā)架構(gòu)如圖9.8所示,QT以開(kāi)發(fā)工具包的形式提供給開(kāi)發(fā)人員,具體包括圖形設(shè)計(jì)器、字體國(guó)際化工具、用來(lái)為不同平臺(tái)和編譯器制作Makefile的工具qmake和Qt的C++類(lèi)庫(kù)等。Qt的C++類(lèi)庫(kù)類(lèi)似于Windows平臺(tái)上的MFC,不同的是Qt的類(lèi)庫(kù)封裝了適應(yīng)不同操作系統(tǒng)的文件處理、網(wǎng)絡(luò)等細(xì)節(jié),支持跨平臺(tái)運(yùn)行。20Qt提供了豐富的窗口部件集,具有面向?qū)ο蟆⒁子跀U(kuò)展、真正的組件編程等優(yōu)點(diǎn),其主要特色包括:(1)優(yōu)良的跨平臺(tái)特性,可移植性強(qiáng)(2)Qt使用標(biāo)準(zhǔn)的面向?qū)ο髾C(jī)制,支持使用C++進(jìn)行開(kāi)發(fā)(3)便利性(4)構(gòu)件支持(5)支持跨平臺(tái)的2D和3D圖形渲染,支持OpenGL、SQL和XML21(6)國(guó)際化:Qt為本地化應(yīng)用提供了完善的支持,同時(shí)用戶界面文本也可以基于消息翻譯表被翻譯成其他各種語(yǔ)言。(7)友好的聯(lián)機(jī)幫助和大量的技術(shù)開(kāi)發(fā)文檔:Qt提供了大量的聯(lián)機(jī)參考文檔,如Networking、XML和database等,初學(xué)者可以很方便地按照文檔的介紹,一步一步地學(xué)習(xí)如何進(jìn)行Qt編程。(8)Qt的商業(yè)版本Qt企業(yè)版和Qt專(zhuān)業(yè)版可供用戶作商業(yè)軟件的開(kāi)發(fā)。229.2.2Qt的信號(hào)與槽機(jī)制信號(hào)(signal)與插槽(slot)機(jī)制是Qt的核心機(jī)制,使用信號(hào)與槽進(jìn)行對(duì)象之間的無(wú)縫通信是Qt最主要的特性之一,也是Qt與其他工具包的主要區(qū)別。信號(hào)與槽是一種高級(jí)接口,是Qt自行定義的一種獨(dú)立于標(biāo)準(zhǔn)C/C++語(yǔ)言的通信機(jī)制,也比其他GUI開(kāi)發(fā)庫(kù)的機(jī)制更為簡(jiǎn)單靈活。23Qt的信號(hào)與槽機(jī)制是一種強(qiáng)有力的處理對(duì)象間通信的方式,可以完全取代傳統(tǒng)的回調(diào)和消息映射機(jī)制。在信號(hào)與槽機(jī)制中,當(dāng)一個(gè)用戶特定事件發(fā)生時(shí),該對(duì)象中的一個(gè)或幾個(gè)特定信號(hào)就被發(fā)射;而槽就是一個(gè)返回值類(lèi)型為void的函數(shù),如果存在一個(gè)或幾個(gè)槽與該信號(hào)相連接,信號(hào)被發(fā)射后,與其相關(guān)聯(lián)的槽(函數(shù))就會(huì)被立刻執(zhí)行,就像一個(gè)正常的函數(shù)調(diào)用一樣。信號(hào)與槽可以使用任意數(shù)量和任意類(lèi)型的參數(shù),信號(hào)與槽連接之后,槽會(huì)在正確的時(shí)間使用該信號(hào)的參數(shù)而被調(diào)用。信號(hào)與槽機(jī)制完全獨(dú)立于GUI的任何事件循環(huán),且只有當(dāng)所有的槽返回以后發(fā)射函數(shù)才能返回。249.2.3Qt圖形設(shè)計(jì)器(QtDesigner)Qt的GUI應(yīng)用程序編程可以直接采用手工編寫(xiě)源代碼的方式,也可以基于QtDesigner進(jìn)行程序設(shè)計(jì)。直接使用代碼來(lái)編寫(xiě)GUI大型程序無(wú)疑是非常痛苦的,好在Qt提供了一個(gè)可視化的GUI圖形界面開(kāi)發(fā)工具Qt圖形設(shè)計(jì)器(QtDesigner)來(lái)加速開(kāi)發(fā)工作。25Qt設(shè)計(jì)器的功能十分強(qiáng)大,界面類(lèi)似于Windows下的VisualStudio的編程,并且它還支持信號(hào)和槽機(jī)制,以使部件間能夠進(jìn)行有效的通信。QtDesigner可以用來(lái)開(kāi)發(fā)一個(gè)應(yīng)用程序全部或者部分的界面組件,而且還提供了大量可供編程使用的部件資源。開(kāi)發(fā)人員既可以創(chuàng)建對(duì)話框式的程序,也可以創(chuàng)建帶有菜單、工具欄等部件的主窗口式程序。26Qt設(shè)計(jì)器利用向?qū)Х绞?,使得菜單、工具欄以及?shù)據(jù)庫(kù)程序的創(chuàng)建變得快且方便。下面介紹一下QtDesigner的開(kāi)發(fā)環(huán)境以及使用QtDesigner開(kāi)發(fā)程序的過(guò)程。在Unix或者Linux操作系統(tǒng)下,通過(guò)點(diǎn)擊Qt設(shè)計(jì)器的圖標(biāo),或者在終端下進(jìn)入Qt所在的目錄然后輸入./designer,即可啟動(dòng)Qt圖形設(shè)計(jì)器。下圖所示是Qt/X11中自帶的QtDesigner的主窗口。27289.2.4Qt開(kāi)發(fā)流程1.手工編寫(xiě)一個(gè)main.cpp文件2.通過(guò)progen命令生成該程序的工程文件3.修改tmake目錄下linux-arm-g++配置文件4.指定tmake路徑5.部分路徑的設(shè)置6.通過(guò)tmake自動(dòng)生成Makefile文件7.運(yùn)行make命令生成可執(zhí)行文件8.掛載主機(jī)9.開(kāi)發(fā)板上的設(shè)置299.2.5建立Qt/Embedded開(kāi)發(fā)環(huán)境為了建立Qt/Embedded開(kāi)發(fā)環(huán)境,需要安裝的軟件包資源包括:(1)tmake工具安裝包:tmake-1.13.tar.gz,用來(lái)生成和管理Qt/Embedded應(yīng)用程序的Makefile文件。(2)Qt/Embedded的安裝包:qt-embedded-2.3.10-free.tar.gz,用于Qt/Embedded的安裝。(3)Qt/X11版安裝包:qt-x11-2.3.2.tar.gz,用來(lái)產(chǎn)生X11開(kāi)發(fā)環(huán)境所需的幾個(gè)必要的工具,如Designer以及虛擬仿真窗口qvfb。利用qvfb,在不需要實(shí)際開(kāi)發(fā)板的情況下,也可以開(kāi)發(fā)Qt應(yīng)用程序。(4)Qtopia安裝包:qtopia-

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論