小班教學(xué)之策劃實(shí)踐評(píng)估與反思_第1頁
小班教學(xué)之策劃實(shí)踐評(píng)估與反思_第2頁
小班教學(xué)之策劃實(shí)踐評(píng)估與反思_第3頁
小班教學(xué)之策劃實(shí)踐評(píng)估與反思_第4頁
小班教學(xué)之策劃實(shí)踐評(píng)估與反思_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

主流嵌入式Linux下GUI解決方案

基本概念介紹

GUI

(graphical

user

interfaces)圖形用戶界面

(GUI),圖形用戶接口.為用戶提供界面友好的所見所得的操作環(huán)境.

主流解決方案

Qt/Embedded圖形庫大而全,能夠開發(fā)較為復(fù)雜的圖形系統(tǒng)

Microwindows項(xiàng)目規(guī)模較小、功能較為薄弱,缺乏等三方軟件開發(fā)的支持MiniGUI小巧、靈活,源碼相對(duì)較少

主流嵌入式Linux下GUI解決方案1基本概念

Qt

Qt是Trolltech公司所開發(fā)的一個(gè)跨平臺(tái)FrameWork環(huán)境(一個(gè)運(yùn)行的平臺(tái),有一堆常用的“庫”)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架支持組件編程(把系統(tǒng)分割成一些組件或設(shè)施的一種思想,修改項(xiàng)目代碼的一些部分不會(huì)破壞整個(gè)系統(tǒng)

)Trolltech

跨平臺(tái)應(yīng)用程序界面框架(QT)嵌入式Linux開發(fā)的應(yīng)用程序平臺(tái),能夠應(yīng)用到PDA和各種移動(dòng)設(shè)備(Qtopia)Qt/EQt庫開發(fā)商Trolltech公司開發(fā)的面向嵌入式系統(tǒng)的Qt版本采用C++封裝豐富的控件資源較好的可移植性

基本概念Qt2Qt/Embedded

Qt/E實(shí)現(xiàn)結(jié)構(gòu)Qt/Embedded的底層圖形引擎基于framebuffer

計(jì)算機(jī)顯示存儲(chǔ)器的一部分,存放屏幕圖像的內(nèi)容。

framebuffer是一種驅(qū)動(dòng)程序接口

將顯示設(shè)備抽象為幀緩沖區(qū)

顯示內(nèi)存的一個(gè)映像

(用戶)

QWSserver

負(fù)責(zé)事件的服務(wù)分發(fā)

Qt/EmbeddedQt/E實(shí)現(xiàn)結(jié)構(gòu)3小班教學(xué)之策劃實(shí)踐評(píng)估與反思4小班教學(xué)之策劃實(shí)踐評(píng)估與反思5Qt/E、Qtopia構(gòu)建GUI時(shí)用于Qt開發(fā)的典型工具

tmake:跨平臺(tái)的Makefile生成器moc:用于QtC++擴(kuò)展的metra-object編譯器designer:用于設(shè)計(jì)窗口組建的應(yīng)用程序,

(*.ui文件)

uic:從界面文件生成代碼的用戶界面編譯器(*.cpp&*.h)qvfb(virtualframebuffer):X窗口用來運(yùn)行和測試Qtopia應(yīng)用程序的系統(tǒng)程序。即Qt的虛擬仿真窗口。qpe(Qtopiaexecutable):用來處理所有的用戶程序界面所需要的包tmaketmake-1.13.tar.gz:用來得到tmake工具/bin:progen工具:生成.pro文件tmake工具:組織生成MakefileQt/E、Qtopia6Qt/E、Qtopia所需要的包qt-embedded-2.3.10.tar.gz:Qt的嵌入式版本。/bin:模擬目標(biāo)機(jī)器的qvfb后臺(tái)程序,如moc、qvfb、uic/lib:qvfb上PC機(jī)模擬運(yùn)行時(shí)需要加載的庫文件libqte.so*qt-x11-2.3.2.tar.gz:Qt的X11版本/bin:在PC機(jī)器上的運(yùn)行的開發(fā)工具和編譯程序,

如desinger、findtr、moc、uic等/lib:源文件編譯成PC機(jī)器X11環(huán)境下的共享聯(lián)接庫libqt.so*qtopia-free-2.1.1.tar.gz:官方網(wǎng)站提供的Qtopia免費(fèi)版。Qtopia是一個(gè)用Qt/Embedded開發(fā)的程序:綜合的應(yīng)用程序平臺(tái)和用戶界面e2fsprogs-1.38.tar.gz:為了得到qtopia所需的uuid.h和libuuid.so。Qt/E、Qtopia所需要的包7Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)

設(shè)定tmake的環(huán)境變量

exportTMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-x86-g++指定tmake在生成Makefile時(shí)使用本機(jī)的編譯器

注:環(huán)境變量的設(shè)置非常重要(指定路徑、庫、頭文件)編譯qt-x11目的:生成moc、uic、qvfb、designer

復(fù)制到qt-embedded\bin目錄

exportQTDIR=$PWD

exportPATH=$QTDIR/bin:$PATH(指定命令搜索路徑)

exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH(共享庫路徑

)配置qt-embedded編譯選項(xiàng)

./configure-system-jpeg-gif-no-xft-qconfigqpe-qvfb-depths4,8,16,32使Qtopia平臺(tái)支持jpeg、gif格式的圖形

指定Qt嵌入式開發(fā)包(qconfig-local.h)生成虛擬緩沖幀工具qvfb,并支持4,8,16,32位的顯示顏色深度

Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)8Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)

使用make命令編譯qt-embedded,用來生成Qt庫(libqte.so)

編譯e2fsprogs庫文件libuuid.so提供uuid支持

唯一字符串生成庫編譯libjpeg、libpng得到j(luò)peg/png圖形編碼解碼程序庫libjpeg.so/libpng.soqtoppia需要Qt/Embedded配置為支持jpeg、gif

配置并交叉編譯Qtopia生成應(yīng)用程序以及桌面環(huán)境Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)9Qt/E、Qtopiaqtopia目錄結(jié)構(gòu)

apps/Applications:應(yīng)用程序桌面配置文件

apps/Games:游戲桌面配置文件

apps/Settings:系統(tǒng)設(shè)置桌面配置文件

bin:二進(jìn)制可執(zhí)行文件

configs:編譯配置文件目錄

doc和docs:qtopia的參考文檔

etc:應(yīng)用配置文件目錄

include/qpe:與qtopia相關(guān)的頭文件目錄

inputmethods:輸入法

library:qtopia部分源代碼目錄

pics:與應(yīng)用相關(guān)的圖片存放目錄

plugins:各種插件目錄,如mpeg3解碼插件、輸入法插件等

sounds:音頻文件存放目錄

taskbar:桌面程序的源代碼(qpe的源代碼)

Qt/E、Qtopia10Qt/E、Qtopia測試Qt/E桌面環(huán)境有源文件progressbar.cpp指定環(huán)境變量TMAKEPATH=…/qws/linux-x86-g++使QTDIR指向Qt/Embedded的安裝路徑以及庫progen–tapp.t–o(生成工程文件.pro)tmake-oMakefile(生成Makefile文件)使用LINUX系統(tǒng)自帶的make進(jìn)行整個(gè)程式的編譯聯(lián)接生成二進(jìn)制的可執(zhí)行文件progressbar運(yùn)行qvfb來模擬Virtualframebuffer(指定模擬器長、寬)Qt/E、Qtopia11Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)

測試Qt/E桌面環(huán)境qvfb-width640-height480&在qvfb上加載二進(jìn)制文件,運(yùn)行程式.如:

./progressbar-qws

建立本機(jī)Qtopia虛擬平臺(tái)

在Virtualframebuffer中實(shí)現(xiàn)Qtopiacd/root/qtopia/qtopia-2.1.1-host/bin

qvfb&

sleep10

./qpe.sh

qvfb:運(yùn)行Qt的虛擬緩沖幀工具把顯示結(jié)果輸出到虛擬緩沖幀,出現(xiàn)桌面環(huán)境Qt/E、Qtopia建立本機(jī)Qtopia虛擬平臺(tái)12Qt/E、Qtopiaqte/qtopia在2410s上的移植軟件環(huán)境PC機(jī)操作系統(tǒng)REDHATLINUX9.0MINICOMARM-LINUX開發(fā)環(huán)境配置NFS(網(wǎng)絡(luò)文件系統(tǒng))使計(jì)算機(jī)系統(tǒng)通過網(wǎng)絡(luò)訪問其它計(jì)算機(jī)系統(tǒng)的目錄和文件遠(yuǎn)程訪問控制修改etc/export指定文件夾共享可訪問/root/share192.168.0.*(rw,sync,no_root_squash)配置minicom友好易用的串口通信程序

/etc/minirc.dfl中編輯系統(tǒng)范圍的缺省值

建立arm-linux-gcc交叉編譯環(huán)境在某個(gè)主機(jī)平臺(tái)上(比如PC上)用交叉編譯器編譯出可在其他平臺(tái)上(比如ARM上)運(yùn)行的代碼的過程

生成的編譯工具在目錄/usr/local/arm/2.95.3/bin環(huán)境:與PC機(jī)不同的庫函數(shù)和編譯器Host-〉交叉編譯工具鏈-〉源代碼-〉二進(jìn)制文件-〉目標(biāo)板可執(zhí)行

Qt/E、Qtopiaqte/qtopia在2410s上的13Qt/E、Qtopiaqte/qtopia在2410s上的移植交叉編譯e2fsprogs./configure--enable-elf-shlibs支持elf共享庫(linux標(biāo)準(zhǔn)可執(zhí)行程序格式)--host=arm-linux指定目標(biāo)機(jī)類型--with-cc=/usr/local/arm/2.95.3/bin/arm-linux-gcc指定編譯器--with-linker=/usr/local/arm/2.95.3/bin/arm-linux-ld指定連接--prefix=/usr/local/arm/2.95.3/arm-linux指定安裝路徑交叉編譯jpeg、libpng需要修改Makefile文件交叉編譯zlib一個(gè)壓縮解壓程序庫提供庫libz.so*

交叉編譯tslib是一個(gè)觸摸屏的庫,它提供諸如濾波、去抖、校準(zhǔn)之類的功能,為不同的觸摸屏提供了一個(gè)統(tǒng)一的接口提供觸摸屏共享庫libts.so等修改qte-2.3.10交叉編譯環(huán)境參數(shù)文件使其增加對(duì)觸摸屏的支持Qt/E、Qtopiaqte/qtopia在2410s上的14Qt/E、Qtopiaqte/qtopia在2410s上的移植設(shè)定tmake的環(huán)境變量

exportTMAKEPATH=/root/qtopia/tmake-1.13/lib/qws/linux-arm-g++指定交叉編譯器交叉編譯Qt/Embedded

./configure-xplatformlinux-arm-g++-qconfigqpe-qvfb-thread-system-jpeg–tslib-system-zlib-system-libpng-gif-depths4,8,16,32-xplatformlinux-arm-g++,表示需要交叉編譯,編譯的目標(biāo)平臺(tái)是linux-arm-g++。具體可查看XPLATFORM文件。-qconfigqpe,表示這次編譯是為了支持QPE(Qtopia),只會(huì)生成QPE所需要的庫。-qvfb,qvfb支持。如果是在開發(fā)板上運(yùn)行,則不需要qvfb。-thread,是否支持多線程。選擇后會(huì)生成libqte-mt.so庫(挺大的)。生成庫文件libqte.so.2.3.10*File命令檢查庫文件:filelibqte.so.2.3.10

libqte.so.2.3.10:ELF32-bitLSBsharedobject,ARM,version1(ARM),notstripped

交叉編譯qtopiaQt/E、Qtopiaqte/qtopia在2410s上的15Qt/E、Qtopiaqte/qtopia在2410s上的移植建立宿主機(jī)和開發(fā)板的通訊執(zhí)行minicom重啟nfs/etc/rc.d/init.d/nfsstartmount–tnfs–onolock55:/root/share/mnt/nfs所需庫文件copy到目標(biāo)板的/usr/lib目錄所需其他文件copy到指定目錄qte/qtopia在2410s上的移植使用tslib修改目標(biāo)機(jī)/etc/profile文件exportTSLIB_TSEVENTTYPE=H3600對(duì)tslib中的設(shè)備結(jié)構(gòu)體定義基于src/ts_read_raw.c文件:查看觸摸屏驅(qū)動(dòng)程序數(shù)據(jù)結(jié)構(gòu),保證一致typedefstruct{

unsignedshortpressure;

unsignedshortx;

unsignedshorty;

unsignedshortpad;

}TS_RET;

驅(qū)動(dòng)程序提供給上層應(yīng)用程序使用的信息,用來存儲(chǔ)觸摸屏的返回值Qt/E、Qtopiaqte/qtopia在2410s上的16項(xiàng)目進(jìn)度觸摸屏坐標(biāo)確定

觸摸屏本身有自己的指標(biāo)分辨率,比如2048*2048(即它的坐標(biāo)系),它和我們LCD顯示屏的坐標(biāo)系(比如大點(diǎn)的1024*768)是兩個(gè)概念。

通過ADS控制器的SPI/I2C總線讀取到的觸摸屏的坐標(biāo)信息,是觸摸屏(貼在LCD上面很像包裝紙的一層薄膜)以它本身坐標(biāo)原點(diǎn)O(物理的固定的,4個(gè)邊角的某一個(gè))為參考的坐標(biāo)對(duì)(X,Y)原理是兩個(gè)電壓值(Nx,Ny),根據(jù)觸摸屏X,Y方向的參考電壓,做個(gè)線性比較,得到其坐標(biāo)值(X,Y)項(xiàng)目進(jìn)度觸摸屏坐標(biāo)確定17項(xiàng)目進(jìn)度觸摸屏坐標(biāo)確定

實(shí)際使用過程中,唯一的參考定位是LCD屏的坐標(biāo)系(x,y),tslib就是把兩個(gè)2維線性坐標(biāo)系通過幾個(gè)樣值的比較,對(duì)應(yīng)轉(zhuǎn)換,即(X,Y)--->(x,y)(1)計(jì)算程序,調(diào)用LCD顯示驅(qū)動(dòng)程序,在LCD上打印幾個(gè)光標(biāo),選擇方便計(jì)算的,比如(x1,y1),(x2,y2)...

(2)觸摸屏驅(qū)動(dòng)程序應(yīng)該還沒有設(shè)計(jì)完成,這里只需要做到其觸摸屏控制器初始化函數(shù)、坐標(biāo)數(shù)據(jù)讀取函數(shù)和相應(yīng)的點(diǎn)擊中斷程序工作就可以了。分別點(diǎn)擊這些點(diǎn),程序中讀出這些點(diǎn)對(duì)應(yīng)的觸摸屏坐標(biāo)值(X1,Y1),(X2,Y2)...

(3)這時(shí)候,就可以得到了兩個(gè)坐標(biāo)系的對(duì)應(yīng)關(guān)系,具體就是代入程序中讀到的采樣值求解下面對(duì)應(yīng)方程的6個(gè)系數(shù)(a,b,c,d,e,f):

{

x=aX+bY+c,y=eX+fY+g

}

項(xiàng)目進(jìn)度觸摸屏坐標(biāo)確定18項(xiàng)目進(jìn)度tslib校正原理

觸摸動(dòng)作模擬鼠標(biāo)動(dòng)作傳統(tǒng)的鼠標(biāo):相對(duì)定位系統(tǒng),只和前一次鼠標(biāo)的位置坐標(biāo)有關(guān)觸摸屏:絕對(duì)坐標(biāo)系統(tǒng)絕對(duì)坐標(biāo)系統(tǒng)的特點(diǎn):每一次定位坐標(biāo)與上一次定位坐標(biāo)沒有關(guān)系,每次觸摸的數(shù)據(jù)通過校準(zhǔn)轉(zhuǎn)為屏幕上的坐標(biāo),不管在什么情況下,觸摸屏這套坐標(biāo)在同一點(diǎn)的輸出數(shù)據(jù)是穩(wěn)定的。不過由于技術(shù)原理的原因,并不能保證同一點(diǎn)觸摸每一次采樣數(shù)據(jù)相同,不能保證絕對(duì)坐標(biāo)定位,點(diǎn)不準(zhǔn),這就是觸摸屏最怕出現(xiàn)的問題:

漂移。對(duì)于性能質(zhì)量好的觸摸屏來說,漂移的情況出現(xiàn)并不是很嚴(yán)重。所以很多應(yīng)用觸摸屏的系統(tǒng)啟動(dòng)后,進(jìn)入應(yīng)用程序前,先要執(zhí)行校準(zhǔn)程序。

項(xiàng)目進(jìn)度tslib校正原理19項(xiàng)目進(jìn)度tslib校正原理

LCD坐標(biāo)和觸摸屏的物理坐標(biāo)的比較從觸摸屏中讀出的是點(diǎn)的物理坐標(biāo),其坐標(biāo)軸的方向、XY值的比例因子、偏移量、縮放因子都與LCD坐標(biāo)不同項(xiàng)目進(jìn)度tslib校正原理20項(xiàng)目進(jìn)度tslib校正原理

使觸摸屏坐標(biāo)和LCD坐標(biāo)一一對(duì)應(yīng),且以插件形式提供附加功能如濾波、防抖。tslib的API接口tsdev表示觸摸屏設(shè)備fd:打開觸摸屏設(shè)備的文件描述符list:指針,依次存放指向tslib插件的指針項(xiàng)目進(jìn)度tslib校正原理21項(xiàng)目進(jìn)度tslib校正原理

tslib的API接口ts_sample存放按鍵消息x,y:按鍵的坐標(biāo)位置(以LCD坐標(biāo)系為基準(zhǔn))pressure:按鍵的輕重程度tv:按鍵發(fā)生的時(shí)間項(xiàng)目進(jìn)度tslib校正原理22項(xiàng)目進(jìn)度tslib校正原理

tslib的函數(shù)ts_open()打開觸摸屏設(shè)備ts_config()讀取觸摸屏配置文件并決定加載模塊

variance:限定點(diǎn)擊力度方差

dejitter:去除點(diǎn)擊抖動(dòng)

linear:將觸摸屏上的坐標(biāo)轉(zhuǎn)換成LCD的坐標(biāo)ts_close()釋放觸摸屏設(shè)備及相關(guān)資源ts_fd(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論