第9章 嵌入式GUI_第1頁(yè)
第9章 嵌入式GUI_第2頁(yè)
第9章 嵌入式GUI_第3頁(yè)
第9章 嵌入式GUI_第4頁(yè)
第9章 嵌入式GUI_第5頁(yè)
已閱讀5頁(yè),還剩28頁(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、1嵌入式GUI陳文智 浙江大學(xué)計(jì)算機(jī)學(xué)院2012年11月浙江大學(xué)2提綱l1. 嵌入式GUI簡(jiǎn)介l2. X Windowsl3. Tiny-X體系結(jié)構(gòu)l4. Tiny-X應(yīng)用程序編寫l實(shí)驗(yàn)一:用Glade編寫一個(gè)簡(jiǎn)單的應(yīng)用程序l實(shí)驗(yàn)二:Tiny-X下的Key/Led應(yīng)用l實(shí)驗(yàn)三:GT/E移植 31. 嵌入式GUI簡(jiǎn)介l嵌入式GUI設(shè)計(jì)一般來(lái)說(shuō)包括以下3個(gè)方面:l硬件設(shè)計(jì),通過(guò)LCD控制器把LCD顯示器和開發(fā)系統(tǒng)連接起來(lái)。l驅(qū)動(dòng)程序設(shè)計(jì),為輸出輸入設(shè)備如LCD設(shè)計(jì)驅(qū)動(dòng)程序,使硬件能驅(qū)動(dòng)起來(lái)l用戶界面程序設(shè)計(jì),使用嵌入式系統(tǒng)提供的函數(shù)庫(kù)進(jìn)行圖形化程序設(shè)計(jì) 4l目前在嵌入式系統(tǒng)比較流行的圖形用戶界面G

2、UI :lQt/Embedded lMicroWindows lOpenGUI lMiniGUI lTiny-X52. X Windows架構(gòu)l采用客戶端/服務(wù)器的設(shè)計(jì)概念 lX Windows由3部分組成:客戶端、服務(wù)器和X協(xié)議 lX Windows是事件驅(qū)動(dòng),大部分時(shí)間處于一種等待事件發(fā)生的狀態(tài) 6lX Windows的基本的API函數(shù)庫(kù) :73. Tiny-X系統(tǒng)框架系統(tǒng)框架lTiny是標(biāo)準(zhǔn)X-windows系統(tǒng)的簡(jiǎn)化版 ,設(shè)計(jì)目標(biāo)是為了在小容量?jī)?nèi)存的環(huán)境下運(yùn)行,非常適合用作嵌入式linux的GUI系統(tǒng) l采用標(biāo)準(zhǔn)的Client/Server體系結(jié)構(gòu) l在嵌入式系統(tǒng)中使用Tiny-X圖形

3、用戶界面開發(fā)產(chǎn)品,上層的應(yīng)用程序的編寫很方便 8lTiny-X系統(tǒng)架構(gòu):9lFrameBuffer 幀緩沖器lTinyX(Xfbdev)TinyX為Xwindows的微縮版,有經(jīng)過(guò)精簡(jiǎn)的Xlib類庫(kù) lGlib包括一些基礎(chǔ)數(shù)據(jù)類型和典型的C程序需要的功能 lGDK是建立在Xlib上的針對(duì)圖形圖像類封裝的底層圖形庫(kù) Tiny-X結(jié)構(gòu)說(shuō)明(1)10Tiny-X結(jié)構(gòu)說(shuō)明(2)lGTK是建立在Xlib和GDK上的高級(jí)面向?qū)ο蟮念悗?kù) l窗口管理器(QVWM): 一種類似于window95風(fēng)格的窗口管理器 lGlade:GTK的集成開發(fā)環(huán)境 11l Tiny-X庫(kù)的調(diào)用關(guān)系: 124. Tiny-X應(yīng)用程

4、序開發(fā) l想在Xscale平臺(tái)上編寫基于Tiny-X的圖形用戶程序需要了解GTK+ lGTK+依賴于Glib并建立在GDK (GIMP Drawing Kit)的上層,基本上是將Xlib功能包裝起來(lái),它是對(duì)底層的X Windows系統(tǒng)庫(kù)Xlib的簡(jiǎn)化 134.1 GTK+的基本概念 l信號(hào)、事件和對(duì)象 l構(gòu)件 l容器 l消息及回調(diào)函數(shù)的概念 14GTK+編程應(yīng)用實(shí)例 l初始化GTK+:寫GTK+程序需要調(diào)用gtk_init函數(shù)對(duì)Gtk+庫(kù)進(jìn)行初始化 l構(gòu)件的使用,一般進(jìn)行如下操作步驟: l包含所調(diào)用構(gòu)件的頭文件 l聲明構(gòu)件 l 構(gòu)件指針的初始化l安排構(gòu)件的位置與層次關(guān)系 l編寫事件處理函數(shù) l

5、GTK+事件循環(huán) 154.2 圖形界面生成器GladelGlade由主窗口、構(gòu)件箱窗口、屬性編輯器窗口、構(gòu)件樹窗口和剪貼板窗口組成 lGlade是傳統(tǒng)界面設(shè)計(jì)工具GTK/GDK的擴(kuò)展,能滿足基于GTK+庫(kù)的圖形用戶界面可視化開發(fā)的基本需求 16lGlade幫助開發(fā)者生成界面代碼,基本過(guò)程如下:l讓Glade設(shè)計(jì)出界面元素,設(shè)置界面元素屬性,為構(gòu)件的信號(hào)設(shè)置回調(diào)函數(shù) l將其存為XML格式,觀察并修改不符合要求的部分 l編寫應(yīng)用其它部分代碼,并在應(yīng)用中載入Glade文件,編譯C代碼生成執(zhí)行文件 17實(shí)驗(yàn):用Glade編寫一個(gè)簡(jiǎn)單的GUI應(yīng)用程序 l實(shí)驗(yàn)?zāi)康?熟悉GTK+編程 熟悉Glade的使用

6、學(xué)會(huì)如何交叉編譯一個(gè)GUI程序 18l1在redhat9.0下安裝Glade,選擇系統(tǒng)/添加或刪除軟件包l選擇管理工具中的”細(xì)節(jié)” ,添加Glade 19l2通過(guò)Glade創(chuàng)建GUI程序創(chuàng)建新的Project,并保存為guitest l創(chuàng)建一個(gè)按鈕 ,選擇option配置20l3. 設(shè)置參數(shù)生成ARM平臺(tái)代碼l在src目錄下生成了ARM平臺(tái)的目標(biāo)程序guitest,下載到目標(biāo)板,并修改其屬性為可執(zhí)行屬性 # export CC=arm-linux-gcc# . /configure -host=arm -build=i686 -target=arm -with-gtk-exec-prefix=

7、/usr/local/XSBase-arm-linux-R1.1# make# cd src21l選擇編譯,生成代碼 l程序在主機(jī)平臺(tái)上運(yùn)行 # /autogen.sh# make# cd /src# /guitest22實(shí)驗(yàn)二:實(shí)驗(yàn)二:Tiny-XTiny-X下的下的KeyPadKeyPad/LED/LED控制實(shí)驗(yàn)控制實(shí)驗(yàn) l實(shí)驗(yàn)?zāi)康膹?fù)習(xí)設(shè)備驅(qū)動(dòng)的編寫進(jìn)一步熟悉Glade的使用通過(guò)GUI界面的控件事件來(lái)控制系統(tǒng)底層的硬件 在這個(gè)實(shí)驗(yàn)中分別使用Glade的8個(gè)buttuon控件來(lái)控制8個(gè)LED燈 23l1. 建一個(gè)Glade圖形用戶界面工程 l2. 建立相應(yīng)的GUI界面結(jié)構(gòu) 24l3. 增加B

8、utton的事件處理 25l4. 打開設(shè)備文件,在main.c中增如下代碼,同時(shí)增加opendev.c以及opendev.h文件 #include interface.h#include support.h#include opendev.h /添加的代碼window1 = create_window1 (); gtk_widget_show (window1); opendev(); /添加的代碼 gtk_main (); return 0;26l5. 在button的click事件中添加控制函數(shù),同時(shí)添加conled.c 以及conled.h實(shí)現(xiàn)文件 #include interface.

9、h#include support.h#include conled.hVoid on_button1_clicked ( GtkButton *button, gpointer user_data) conled( 1 );27l6. 修改src/Makefile文件 28l7. 配置Glade l8. 保存工程文件,進(jìn)入終端進(jìn)行交叉編譯 #export CC=arm-linux-gcc#./configure host=arm build=i686 target=arm with-gtk-exec-prefix=/usr/local/arm-linux-gcc-R1.129實(shí)驗(yàn)三:實(shí)驗(yàn)三:

10、QT/EQT/E移植實(shí)驗(yàn)移植實(shí)驗(yàn) l實(shí)驗(yàn)?zāi)康?了解QT圖形用戶界面 學(xué)會(huì)如何移植QT/E 移植QPE30l1. QT/Embedded 安裝及環(huán)境設(shè)置 lQt/Embedded環(huán)境設(shè)置(host) lQt/Embedded配置,使用configure命令生成Makefile# .base_profileQTDIR=/qt-2.3.2LD_LIBRARY_PATH=/qt-2.3.2/libPATH=$PATH:$HOME/binExport QTDIR LD_LIBRARY_PATH31l執(zhí)行configure的話會(huì)問到如下幾個(gè)問題:l是否同意license?選擇yes l 選擇feature

11、 configuration。選擇第5項(xiàng)Everything l選擇colordepth時(shí)選擇16 l是否支持Qt Virtual Framebuffer?在ARM上用,可以選擇 nolQt/Embedded 編譯:# ./configure -xplatform linux-ipaq-g+ -shared $ make32l2移植QT/E應(yīng)用程序 l把主機(jī)平臺(tái)編譯好的qt-2.3.7文件夾mount到目標(biāo)板的文件系統(tǒng)中 l在目標(biāo)板上設(shè)置 l在目標(biāo)板上執(zhí)行QT下的例子 # portmap # mount t 192.168.0.50:/root/qt-2.3.7 /mnt_sharerootXsbase255 /$ export QTDIR=/nfs_share/qt-2.3.7rootXsbase255 /$ export LD_LIBRARY=/nfs_share/qt-2.3.7/lib:$LD_LIBRARY_PATHroo

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論