![]() |
|
嵌入式培訓(xùn)資料:Qt/Embedded編程入門 |
|
Qt/Embedded以原始Qt為基礎(chǔ),并做了許多出色的調(diào)整以適用于嵌入式環(huán)境。Qt/Embedded通過Qt API與Linux I/O設(shè)施直接交互,成為嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省內(nèi)存,因?yàn)樗恍枰粋(gè)X服務(wù)器或是Xlib庫(kù),它在底層拋棄了X lib,采用framebuffer(幀緩沖)作為底層圖形接口。同時(shí),將外部輸入設(shè)備抽象為keyboard和mouse輸入事件。Qt/Embedde的應(yīng)用程序可以直接寫內(nèi)核緩沖幀,這避免開發(fā)者使用繁瑣的Xlib/Server系統(tǒng)。圖1.1比較了Qt/Embedded與Qt/X11的架構(gòu)區(qū)別。
使用單一的API進(jìn)行跨平臺(tái)的編程可以有很多好處。提供嵌入式設(shè)備和桌面計(jì)算機(jī)環(huán)境下應(yīng)用的公司可以培訓(xùn)開發(fā)人員使用同一套工具開發(fā)包,這有利于開發(fā)人員之間共享開發(fā)經(jīng)驗(yàn)與知識(shí),也使得管理人員在分配開發(fā)人員到項(xiàng)目中的時(shí)候增加靈活性。更進(jìn)一步來說,針對(duì)某個(gè)平臺(tái)而開發(fā)的應(yīng)用和組件也可以銷售到Qt支持的其他平臺(tái)上,從而以低廉的成本擴(kuò)大產(chǎn)品的市場(chǎng)。 (1)窗口系統(tǒng) 一個(gè)Qt/Embedded窗口系統(tǒng)包含了一個(gè)或多個(gè)進(jìn)程,其中的一個(gè)進(jìn)程可作為服務(wù)器。該服務(wù)進(jìn)程會(huì)分配客戶顯示區(qū)域,以及產(chǎn)生鼠標(biāo)和鍵盤事件。該服務(wù)進(jìn)程還能夠提供輸入方法和一個(gè)用戶接口給運(yùn)行起來的客戶應(yīng)用程序。該服務(wù)進(jìn)程其實(shí)就是一個(gè)有某些額外權(quán)限的客戶進(jìn)程。任何程序都可以在命令行上加上“-qws”的選項(xiàng)來把它作為一個(gè)服務(wù)器運(yùn)行。 服務(wù)器與客戶之間使用UNIX Domain Socket進(jìn)行通信,通過重載QApplication的qwsEventFilter()函數(shù),可以對(duì)客戶從服務(wù)器收到的所有事件進(jìn)行直接的訪問。客戶與服務(wù)器,以及客戶之間使用QCOP協(xié)議進(jìn)行通信,QCOP是一個(gè)在不同的通道上進(jìn)行消息傳遞的多對(duì)多通信協(xié)議。在Qt/Embedded中,這種通信機(jī)制使用QCopChannel類來實(shí)現(xiàn),有關(guān)這個(gè)類的描述,請(qǐng)讀者參考相關(guān)資料。 QProcess類提供了另外一種異步的進(jìn)程間通信機(jī)制。它用于啟動(dòng)一個(gè)外部的程序并且通過寫一個(gè)標(biāo)準(zhǔn)的輸入和讀取外部程序的標(biāo)準(zhǔn)輸出和錯(cuò)誤碼來和它們通信。 (2)字體 Qt/Embedded使用FreeType 2字體引擎來產(chǎn)生字體的輸出,所支持的格式取決于本機(jī)所安裝的FreeType庫(kù)的版本。另外,Qt/Embedded支持Qt預(yù)渲染的字體格式(QPF與QPF2)。QPF2是Qt/Embedded自帶的格式,QPF是由Qt/Embedded 2.x,3.x所繼承過來的。所有支持的字體均使用Unicode字符編碼,一個(gè)完整的16點(diǎn)陣的Unicode字體的存儲(chǔ)空間通常超過1MB。 FreeType 2庫(kù)支持下列字體格式:TrueType(TTF),PostScript Type1(PFA/PFB),Bitmap Distribution Format(BDF),CID-keyed Type1,Compact Font Format(CFF),OpenType fonts,SFNT-based bitmap fonts,Portable Compiled Format(PCF),Microsoft Windows Font File Format(Windows FNT),Portable Font Resourse(PFR),Type 42(limited support)。可以為FreeType 2字體引擎添加模塊,以使其支持其它的字體。 Qt預(yù)渲染字體(QPF2)是Qt/Embedded特有的、與架構(gòu)無(wú)關(guān)的、輕量級(jí)的字體格式。Nokia提供了交叉編譯工具makeqpf,可以由系統(tǒng)字體中生成QPF2文件。另外,考慮到兼容性,Nokia提供了對(duì)繼承而來的QPF格式的支持。 (3)輸入設(shè)備及輸入法 Qt/Embedded支持幾種鼠標(biāo)協(xié)議:BusMouse、IntelliMouse,Microsoft和MouseMan.Qt/ Embedded還支持NECVr41XX和iPAQ的觸摸屏。通過從QWSMouseHandler或者Qcalibra- tedMouseHandler派生子類,開發(fā)人員可以讓Qt/Embedded支持更多的客戶指示設(shè)備。 Qt/Embedded支持標(biāo)準(zhǔn)的101鍵盤和Vr41XX按鍵,通過子類化QWSKeyboardHandler可以讓Qt/Embedded支持更多的客戶鍵盤和其他的非指示設(shè)備。 對(duì)于非拉丁語(yǔ)系字符(例如阿拉伯,中文,希伯來和日語(yǔ))的輸入法,需要把它寫成過濾器的方式,并改變鍵盤的輸入。輸入法的作者應(yīng)該對(duì)全部的Qt API的使用有完整的認(rèn)識(shí)。在一個(gè)無(wú)鍵盤的設(shè)備上,輸入法成了惟一的輸入字符的手段。Qtopia提供了4種輸入方法:筆跡識(shí)別器、圖形化的標(biāo)準(zhǔn)鍵盤、Unicode鍵盤和基于字典方式提取的鍵盤。 (4)屏幕加速 通過子類化QScreen和QRasterPaintEngine可以實(shí)現(xiàn)硬件加速,從而為屏幕操作帶來好處。Trolltech提供了Mach64和Voodoo3視頻卡的硬件加速的驅(qū)動(dòng)例子,同時(shí)可以按照協(xié)議編寫其他的驅(qū)動(dòng)程序。 精品課程推薦:QT應(yīng)用開發(fā)培訓(xùn),幫助學(xué)員熟悉Qt 的開發(fā)工具與開發(fā)環(huán)境,了解Qt 基本組件與框架,能夠基于各種常見的操作系統(tǒng)平臺(tái)撰寫Qt 窗口程序,并掌握 Qt 在嵌入式系統(tǒng)的核心運(yùn)用,包括Qt/Embedded編程方法和編程技能、常用的基礎(chǔ)類、信號(hào)和槽的概念和對(duì)象間通訊機(jī)制及圖形界面的編寫。 熱點(diǎn)鏈接:
1、FPGA硬件系統(tǒng)設(shè)計(jì)實(shí)用技巧 |