日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式硬件

QT是挪威的Trolltech公司開發(fā)的一個跨平臺的C++的GUI組件,而Qtopia智能手機開發(fā)平臺則是基于QT的桌面系統(tǒng),是Trolltech為采用嵌入式Linux操作系統(tǒng)的消費電子設備而開發(fā)的綜合應用平臺。

在現(xiàn)在競爭日趨激烈的智能手機開發(fā)平臺上,Qtopia以他的眾多優(yōu)點,如自身提供豐富的窗口部件集,具有面向對象的特性,易于擴展,真正的組件編程等逐漸為越來越多的手機開發(fā)工程師所熟悉和使用。

本文通過結合對QT開發(fā)平臺中特殊通信機制的簡略介紹,重點介紹了如何在Qtopia平臺上實現(xiàn)輸入法軟鍵盤的策略,以及相應的優(yōu)化改進,使讀者能大致了解QT平臺上開發(fā)的流程,對熟悉Qtopia平臺以及在此平臺上的開發(fā)都有很好的輔助作用。

1 Qtopia內部特殊的通信機制

在Qtopia內部,共有3種特殊的通信機制:Qcop協(xié)議,信號-槽(signal-slot)機制和FIFO機制,其中大量應用的是Qcop協(xié)議和信號一槽(signal-slot)機制。

Qcop是QT內部的一種通信協(xié)議,主要用于不同的客戶之間在同一地址空間內部或者不同進程之間的通信,大致的使用流程是在函數(shù)中使用Qtopia定義好的類:QcopEnvelop,將相關的消息和參數(shù)發(fā)送出去。然后在需要對Qcop信息進行處理的地方定義好接收管道,同時再定義相關的消息(message)處理函數(shù),根據發(fā)送過來的不同的message進行不同的處理。而信號(signal)-槽(slot)機制則是指一種高級接口,應用于C++的對象之間的通信,他取代了很多GUI工具包中的回調函數(shù),分別由以下步驟實現(xiàn):

(1)當對象改變狀態(tài)時,相應的信號(signal)由該對象發(fā)射(emit)出去;
(2)而槽(slot)是用來接收指定的signal的,他就是普通的對象成員函數(shù)。

當signal發(fā)出的時候,不相關的組件不知道他代表什么,只有定義好的接收slot才能處理signal信息,從而做到了真正的信息封裝。通過專門的函數(shù)connect來指定接收signal的slot,而且signal和slot之間可以一對一,一對多,多對一,多對多,還可以signal觸發(fā)signal,非常的靈活和易用,對應關系如圖1所示。

圖1 signal與slot的對應關系

與在其他平臺上開發(fā)的輸入法模塊明顯不同的是,在Qtopia平臺上開發(fā)輸入法模塊充分利用了其內部特殊的通信機制,尤其是信號-槽(signal-slot)機制,從而使輸入法的實現(xiàn)簡潔明了。

2 軟鍵盤功能中各部分模塊的實現(xiàn)

現(xiàn)在準備在Qtopia平臺上實現(xiàn)軟鍵盤的功能。代碼都是在PC上的Qtopia模擬器環(huán)境下做的編寫和修改。Qtopia模擬器是Trolltech公司提供的輔助開發(fā)工具,用于在PC上模擬出手機開發(fā)板上的開發(fā)情況,方便Qtopia工程師進行代碼修改和調試。而最后的調試則是在debug板上進行的,通過看實際的效果,有助于發(fā)現(xiàn)一些在模擬器上容易忽略的問題。為了簡化敘述手段,將可能提到的調用函數(shù)的形參全部省去,如emit key(int unicode,int scancode,int mode,bool press,bool repeat)省略為emitkey(),具體的函數(shù)調用實現(xiàn)請參閱QT的幫助手冊。

項目計劃總共要實現(xiàn)拼音,英文和符號輸入法鍵盤共3個模塊,現(xiàn)在重點描述最具有代表性的拼音輸入法鍵盤的實現(xiàn)。其鍵盤草圖如圖2所示。

圖2 拼音輸入法鍵盤草圖

下方的軟鍵盤即是輸入按鈕所在的地方,上方2條選擇欄分別是輸入的拼音顯示欄和與拼音對應的漢字候選欄。要完成這個鍵盤必須實現(xiàn)如下幾個模塊:

拼音輸入法引擎模塊 用來實現(xiàn)與拼音匹配的漢字。
智能匹配模塊 搜尋與輸入拼音相接近的漢字以及聯(lián)想的詞組。
漢字選擇欄 顯示模塊顯示對應的漢字。
拼音輸入欄 顯示模塊顯示輸入的拼音。
軟鍵盤輸入界面模塊 接收用戶的輸入,轉給Qtopia系統(tǒng)。

拼音輸入法引擎模塊直接購買了第三方廠商的產品,智能匹配模塊則是隨著引擎一起購買而來的,但是由于廠商開放了模塊的源代碼,在實現(xiàn)的時候按照客戶的需要做了一些小小的改動,如調整了一些原來匹配字符順序的不合理,提高了某些字符的優(yōu)先級等。

漢字選擇欄模塊類picksboard.cpp和拼音顯示欄模塊類pickboardPY.cpp都繼承自QT中的Qframe類,在確定選擇欄的尺寸之后,采用輸入法引擎模塊的字符顯示接口, 即可以正確地顯示需要選擇的字符。

輸入法界面模塊是重點要解決的模塊,于是先初始化鍵盤類keyboardconfig.cpp,這個類繼承自QT 中的Qobject類 然后在調用軟鍵盤的時候使用qtopia中的繪圖函數(shù)drawLine()和setPen()畫出一個軟鍵盤。然后需要達到的目標是:在軟鍵盤上點擊所見的字符后,能正確地顯示字符;點擊軟鍵盤上的某個按鈕后需要有按鈕反白,給使用者視覺上以按下按鍵的效果。

實現(xiàn)原理是在Qtopia中提供了一個key()信號。根據前面說過的信號-槽(signal-slot)機制,在點擊軟鍵盤按鍵時,發(fā)送相應的帶參數(shù)的key()信號給Qtopia系統(tǒng),即emitkey(unicode,scancode,mode,true,false),Qtopia系統(tǒng)中有專門的接收key()信號的槽來根據參數(shù)unicode,作為字符的惟一識別標志,在對應的unicode表中尋找對應的字符,顯示在屏幕上即可,十分簡單高效。

按鍵反白的效果采用了在按下按鍵時對鍵盤進行重繪,將按下的那個按鍵區(qū)域填涂上反白的顏色,而放開按鍵的時候再次對鍵盤進行重繪,將按鍵區(qū)域填涂上原鍵盤的顏色。即按照如下的一個流程:初始化一繪制軟鍵盤(彈出軟鍵盤)一點擊觸摸屏一重繪軟鍵盤(按鍵反白顯示)一釋放觸摸屏一再次重繪軟鍵盤(軟鍵盤正常顯示)。

3 組合模塊,軟鍵盤的實現(xiàn)

軟鍵盤的實現(xiàn)流程如圖3所示。

圖3 軟鍵盤實現(xiàn)流程圖

現(xiàn)在前期的準備工作都已經完成,應該在合適的位置組成軟鍵盤。在Qtopia模擬器的顯示屏上,為了不與其他控件產生沖突,也為了選擇欄和軟鍵盤的相對位置有個根據的基準,還需要專門為軟鍵盤的顯示設置一個容器(container)。因此再寫出一個類keyboardContainer.cpp,每次在彈出軟鍵盤之前,先初始化和彈出container,然后選擇欄和軟鍵盤的顯示就以這個容器的顯示位置為依據,從而顯示在正確的位置上,這樣處理還有一個好處就是:要調整整個軟件盤的位置,只要調整容器的位置即可,而不用去改動其他代碼。

于是在完成keyboardContainer.cpp類之后,將選擇欄和軟鍵盤在容器里的正確位置顯示,然后將容器在整個Qtopia模擬器上的正確位置顯示即可,經過測試,可以達到目的。

4 軟鍵盤實現(xiàn)策略的改進和優(yōu)化

將代碼下載到debug板上進行調試時,發(fā)現(xiàn)在軟鍵盤彈出時有比較明顯的刷新遲滯和閃爍現(xiàn)象,不能達到彈出和反白顯示正常的要求。經過跟蹤和分析,以及對調試板性能的估計,發(fā)現(xiàn)原因在于:采用ARM 架構的debug板上的CPU主頻較低,無法很順暢地即時重繪軟鍵盤,而在模擬器上調試時,由于PC的CPU頻率較高,則不影響軟鍵盤的重繪。

解決問題的關鍵在于提高重繪鍵盤的速度。于是考慮用貼圖來代替重繪,實現(xiàn)策略是將軟鍵盤圖片先保存在內存中,在需要的時候直接調用內存中的圖片,這樣就省去了重繪的時間,可以大大提高速度。按鍵反白效果的顯示,也是用反白顏色的按鍵小圖片來代替對按下鍵的填涂顏色,同樣不需要對鍵盤進行重繪。經過計算,圖片占用內存約100 kB,對于智能手機上64 MB左右的內存大小來說,完全承受得起。Qtopia中也提供了bitBlt()函數(shù)來將內存中的圖片直接顯示在屏幕上。

還有一點要注意,由于初始化圖片的數(shù)量比較多,會影響開機的速度,可以將初始化圖片的時間推后,考慮到一般用戶使用軟鍵盤的習慣,將初始化圖片的時間定在完全開機后的1~3 s是可行的。用Qtopia中的定時器類函數(shù)可以順利地實現(xiàn)這一點。在優(yōu)化之后,再次將代碼下載到debug板上,經過測試,發(fā)現(xiàn)鍵盤的彈出和反白顯示都沒有停滯感,功能也可以完全實現(xiàn),從而順利地完成了Qtopia上的拼音輸入法軟鍵盤模塊的實現(xiàn)。

5 結語

在現(xiàn)在的手機開發(fā)中,第三方廠商所能提供的支持越來越多,但是在任何一款新手機的開發(fā)里,輸入法模塊的實現(xiàn)都是必須自行開發(fā)的。Qtopia提供了大量靈活的函數(shù),在嵌入式系統(tǒng)這個內存小,CPU主頻相對較低的特殊環(huán)境下,為順利實現(xiàn)模塊功能提供了很大的選擇余地。因此,這個Qtopia平臺上輸入法模塊實現(xiàn)的例子有嵌入式開發(fā)人員可以借鑒的地方,同時也說明了Qtopia平臺以他優(yōu)良的擴展性能,一定能夠在競爭激烈的手機開發(fā)平臺市場中占有自己的一席之地。


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉