|  | |
| 嵌入式培訓資料:Qt/Embedded編程入門 | |
| Qt/Embedded以(yi)原(yuan)始(shi)Qt為基礎,并做了(le)許多出(chu)色的調整以(yi)適用于嵌入(ru)(ru)式環境。Qt/Embedded通過Qt API與(yu)Linux I/O設施直接交(jiao)互(hu),成為嵌入(ru)(ru)式Linux端口。同Qt/X11相比,Qt/Embedded很省內(nei)存,因(yin)為它(ta)不需要(yao)一(yi)個X服(fu)務器(qi)或是Xlib庫,它(ta)在底(di)層拋棄了(le)X lib,采用framebuffer(幀(zhen)緩沖(chong))作(zuo)為底(di)層圖形接口。同時,將(jiang)外部輸入(ru)(ru)設備抽象為keyboard和(he)mouse輸入(ru)(ru)事件。Qt/Embedde的應用程序(xu)可以(yi)直接寫內(nei)核緩沖(chong)幀(zhen),這避免開發者使用繁瑣的Xlib/Server系(xi)統。圖1.1比較了(le)Qt/Embedded與(yu)Qt/X11的架構區(qu)別。 
 使用單一的(de)(de)API進(jin)行跨平(ping)臺(tai)的(de)(de)編程可以有(you)很多好處。提供(gong)嵌入式設備和(he)桌面計算機環境下應用的(de)(de)公司可以培訓(xun)開(kai)發(fa)(fa)人(ren)員(yuan)(yuan)使用同一套工具(ju)開(kai)發(fa)(fa)包,這(zhe)有(you)利于(yu)開(kai)發(fa)(fa)人(ren)員(yuan)(yuan)之間共享開(kai)發(fa)(fa)經驗與知識,也使得管理人(ren)員(yuan)(yuan)在分配開(kai)發(fa)(fa)人(ren)員(yuan)(yuan)到(dao)(dao)項目中的(de)(de)時候增加靈活性。更(geng)進(jin)一步來說(shuo),針對某個平(ping)臺(tai)而開(kai)發(fa)(fa)的(de)(de)應用和(he)組件(jian)也可以銷售到(dao)(dao)Qt支持(chi)的(de)(de)其他平(ping)臺(tai)上,從而以低廉(lian)的(de)(de)成(cheng)本擴大產品的(de)(de)市場。 (1)窗口系統 一(yi)個(ge)Qt/Embedded窗口(kou)系統(tong)包含了(le)一(yi)個(ge)或多個(ge)進程(cheng),其(qi)中的(de)(de)一(yi)個(ge)進程(cheng)可(ke)作為服(fu)(fu)務(wu)(wu)器。該(gai)服(fu)(fu)務(wu)(wu)進程(cheng)會分配客戶顯示區域,以(yi)及產生鼠(shu)標和鍵盤事件。該(gai)服(fu)(fu)務(wu)(wu)進程(cheng)還(huan)能夠提供輸入方法和一(yi)個(ge)用戶接口(kou)給運行(xing)起來的(de)(de)客戶應用程(cheng)序。該(gai)服(fu)(fu)務(wu)(wu)進程(cheng)其(qi)實就(jiu)是一(yi)個(ge)有某些額外權限的(de)(de)客戶進程(cheng)。任何程(cheng)序都可(ke)以(yi)在命(ming)令(ling)行(xing)上(shang)加(jia)上(shang)“-qws”的(de)(de)選項(xiang)來把它作為一(yi)個(ge)服(fu)(fu)務(wu)(wu)器運行(xing)。 服務(wu)器(qi)與(yu)(yu)客戶(hu)之間使(shi)用(yong)UNIX Domain Socket進行(xing)(xing)通(tong)(tong)信(xin)(xin),通(tong)(tong)過重載QApplication的(de)(de)qwsEventFilter()函數,可以(yi)對客戶(hu)從服務(wu)器(qi)收到(dao)的(de)(de)所有事件進行(xing)(xing)直(zhi)接(jie)的(de)(de)訪問。客戶(hu)與(yu)(yu)服務(wu)器(qi),以(yi)及客戶(hu)之間使(shi)用(yong)QCOP協議進行(xing)(xing)通(tong)(tong)信(xin)(xin),QCOP是一個在不(bu)同的(de)(de)通(tong)(tong)道上進行(xing)(xing)消息傳(chuan)遞的(de)(de)多(duo)對多(duo)通(tong)(tong)信(xin)(xin)協議。在Qt/Embedded中,這種(zhong)通(tong)(tong)信(xin)(xin)機(ji)制使(shi)用(yong)QCopChannel類(lei)來實(shi)現,有關(guan)這個類(lei)的(de)(de)描述,請(qing)讀者(zhe)參考相關(guan)資料。   QProcess類提供(gong)了另外(wai)一(yi)種(zhong)異步的(de)(de)進程(cheng)(cheng)間(jian)通信機制。它用于啟(qi)動一(yi)個外(wai)部的(de)(de)程(cheng)(cheng)序并且通過(guo)寫一(yi)個標(biao)準(zhun)的(de)(de)輸(shu)入和(he)讀取外(wai)部程(cheng)(cheng)序的(de)(de)標(biao)準(zhun)輸(shu)出和(he)錯誤碼來和(he)它們通信。 (2)字體 Qt/Embedded使(shi)用FreeType 2字體(ti)(ti)引擎來產生字體(ti)(ti)的(de)輸出,所支(zhi)持(chi)的(de)格式取決于本機所安(an)裝的(de)FreeType庫(ku)的(de)版本。另(ling)外,Qt/Embedded支(zhi)持(chi)Qt預渲染的(de)字體(ti)(ti)格式(QPF與(yu)QPF2)。QPF2是Qt/Embedded自帶的(de)格式,QPF是由Qt/Embedded 2.x,3.x所繼承過(guo)來的(de)。所有支(zhi)持(chi)的(de)字體(ti)(ti)均使(shi)用Unicode字符編碼(ma),一個完整的(de)16點陣的(de)Unicode字體(ti)(ti)的(de)存儲空間通(tong)常超過(guo)1MB。 FreeType 2庫支持下列字體(ti)格式(shi):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字體(ti)引擎添加(jia)模塊,以使其支持其它(ta)的字體(ti)。 Qt預渲染字(zi)體(ti)(QPF2)是Qt/Embedded特有的(de)、與架構無關的(de)、輕量(liang)級的(de)字(zi)體(ti)格(ge)(ge)式。Nokia提(ti)供了交叉編譯工(gong)具makeqpf,可以由系統字(zi)體(ti)中生(sheng)成QPF2文(wen)件。另外,考慮到兼容性,Nokia提(ti)供了對繼承(cheng)而來的(de)QPF格(ge)(ge)式的(de)支持。 (3)輸入設備及輸入法 Qt/Embedded支(zhi)(zhi)持(chi)幾(ji)種鼠標(biao)協議:BusMouse、IntelliMouse,Microsoft和MouseMan.Qt/ Embedded還支(zhi)(zhi)持(chi)NECVr41XX和iPAQ的(de)觸(chu)摸屏(ping)。通過從(cong)QWSMouseHandler或者Qcalibra- tedMouseHandler派生子類,開發人員可(ke)以讓Qt/Embedded支(zhi)(zhi)持(chi)更多的(de)客戶指示(shi)設備。   Qt/Embedded支(zhi)持(chi)標準的101鍵(jian)盤和Vr41XX按鍵(jian),通(tong)過子類化QWSKeyboardHandler可(ke)以讓Qt/Embedded支(zhi)持(chi)更多的客戶鍵(jian)盤和其他的非指示設備。 對(dui)于非(fei)拉丁語系字(zi)符(例如(ru)阿(a)拉伯,中文,希伯來和日語)的(de)(de)(de)輸(shu)入(ru)法,需要把它寫(xie)成(cheng)過濾器的(de)(de)(de)方式,并改變鍵盤的(de)(de)(de)輸(shu)入(ru)。輸(shu)入(ru)法的(de)(de)(de)作者應該對(dui)全(quan)部的(de)(de)(de)Qt API的(de)(de)(de)使(shi)用有完(wan)整(zheng)的(de)(de)(de)認識。在一個(ge)無鍵盤的(de)(de)(de)設備(bei)上(shang),輸(shu)入(ru)法成(cheng)了惟一的(de)(de)(de)輸(shu)入(ru)字(zi)符的(de)(de)(de)手段(duan)。Qtopia提供了4種輸(shu)入(ru)方法:筆跡(ji)識別器、圖形化(hua)的(de)(de)(de)標準(zhun)鍵盤、Unicode鍵盤和基(ji)于字(zi)典方式提取的(de)(de)(de)鍵盤。 (4)屏幕加速 通(tong)過(guo)子類化QScreen和QRasterPaintEngine可以實現(xian)硬件加(jia)速,從而為(wei)屏幕操作帶(dai)來好(hao)處。Trolltech提供了Mach64和Voodoo3視頻(pin)卡的硬件加(jia)速的驅(qu)動例子,同時可以按照協(xie)議編寫其他的驅(qu)動程序(xu)。 精品課程推薦:QT應用開發培訓,幫助學員熟悉Qt 的開(kai)發工具(ju)與開(kai)發環境,了解Qt 基本組件與框架,能夠基于各種常(chang)見(jian)的操作系統平臺(tai)撰寫Qt 窗口程序,并(bing)掌握 Qt 在嵌入式(shi)系統的核心運用,包括(kuo)Qt/Embedded編(bian)程方法和編(bian)程技(ji)能、常(chang)用的基礎類(lei)、信號和槽的概念和對象間通訊(xun)機制及圖形界面(mian)的編(bian)寫。 熱點鏈接(jie): 
          1、FPGA硬件系統設計實用技巧 |