999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QT/E的嵌入式Linux系統的軟鍵盤實現

2012-07-13 03:07:24劉守印
電子設計工程 2012年5期
關鍵詞:嵌入式界面信號

謝 芬,潘 麗,劉守印

(華中師范大學 湖北 武漢 430079)

隨著對嵌入式系統體積小型化和操作人性化的要求,以及大尺寸觸摸式顯示屏的廣泛應用,在嵌入式系統中采用軟鍵盤實現字符的輸入,已經成為目前的發展主流。QT是一個跨平臺的C++圖形界面庫[1],是由挪威TrollTech公司推出的產品。它采用的是面向對象的程序設計思想,因此,具有良好的可擴展性和可移植性,同時支持多個GUI平臺的交互開發。QT采用了良好的封裝機制,使得它的模塊化程度非常高,可重用性好,開發方便。憑借其良好的性能,QT已成為目前GUI開發中使用最為廣泛的圖形界面庫之一。QT/E(QT/Embedded)是用于嵌入式系統的QT版本。QT/E去掉了對XLib的依賴而直接工作于Frame Buffer上,因而效率更高,文中主要使用QT4.5.3版本,在嵌入式Linux環境[2]下實現軟鍵盤設計。

1 QT/E體系結構

QT/E是2001年Trolltech公司開發的一款面向嵌入式系統的QT版本。它采用輕量級窗口系統,完全摒棄了底層的XLib,以Framebuffer作為底層圖形接口,極大地減少了對內存的消耗。QT/E在上層仍然保持著原來的QT架構,因此,針對在Xwindow上設計的QT程序仍然具有很好的移植性。QT/E的基本體系結構如圖1所示。

1)QT/E體系結構[3]中的圖形引擎是通過相關的圖形算法和Framebuffer操作底層的硬件設備來實現的;事件驅動則是通過底層的輸入輸出設備驅動來實現對外界事件的響應。

2)如圖1所示,由圖形引擎層實現對圖形界面的繪圖操作,然后由QT基本類提供對外界的操作接口。其中,圖形類提供圖形操作接口,比如:畫線、畫矩形等;控件類通過繼承公共抽象類QWidget來實現基本的控件,為外界提供接口。

圖1 QT/E體系結構Fig.1 Structure diagram of QT/E

2 QT/E通信機制

在圖形界面編程時,我們經常要實現界面之間的相互切換或者相互通知,更具體的來說就是需要實現類與類之間的相互通信。比如,在軟鍵盤的設計中,當一個事件產生時,系統就會發出一個信號。信號和槽(Signal&slot)機制[4-5]是QT的核心特征,在QT庫中有很多已經設置好的信號,比如:clicked()、triggered()等,開發人員也可以根據需要來自定義某些信號。事件的響應對應著QT窗口里的槽函數,和信號類似,系統有很多預定義的槽,比如 exit( )、quit( )等,用戶也可以根據需要來添加自己的槽函數。

當對象改變其狀態時,信號就由該對象發射 (emit)出去,這就是對象所要做的全部事情,它不知道另一端是誰在接收這個信號。這就是真正的信息封裝,它確保對象被當作一個真正的軟件組件來使用。槽用于接收信號,但它們是普通的對象成員函數。一個槽并不知道是否有任何信號與自己相連接。而且,對象并不了解具體的通信機制。可以將很多信號與單個槽進行連接,也可以將單個信號與很多槽進行連接,甚至于將一個信號與另外一個信號相連接也是可能的。

因此,整個QT窗口的設計簡單、靈活且擴展性好。信號與槽之間的鏈接一般用connect()函數來實現,具體關聯方式和實現函數如圖2所示:

圖2 信號與槽連接關系圖Fig.2 Connect diagram between signal and slot

3 基于QT/E軟鍵盤的實現

文中主要根據項目的實際需要,在軟鍵盤上制定了數字鍵、字母鍵、退出鍵和確定鍵。具體分兩步實現,第一步:在基于linux環境的PC機上制定軟鍵盤,并編寫代碼實現其按鍵功能;第二步:生成能夠在ARM板上運行的代碼,并移植到ARM板上。

3.1 PC機x11環境下制定軟鍵盤的模型

根據項目的實際需求,在PC機x11/QT環境下設計了軟鍵盤界面,該軟鍵盤具有數字鍵、字母鍵、退出鍵和確定鍵,總共42個按鍵,如圖3所示。在linux環境的QT designer下,創建新的widget,然后根據項目中所需要的按鍵個數來確定軟鍵盤的大小,在此,選擇軟鍵盤的外框大小為:540×160。軟鍵盤外框搭建完成之后,需要在軟鍵盤區域內加入實際所需要的按鍵。將Widget Box下Buttons選項中的PushButton按鍵拖入到軟鍵盤區域內,在PushButton按鍵屬性的文本編輯中填入按鍵值,比如“1”。在PushButton按鍵屬性的名字編輯中填入按鍵名,比如“n1”。

同理,在軟鍵盤區域內拖入實際所需要按鍵個數的按鍵,根據所需要的鍵值修改每個按鍵上面的文本屬性和名字屬性。按照一般鍵盤的布局對它們進行排列:

圖3 x11環境下軟鍵盤排列圖Fig.3 Soft keyboard array diagram in xll

3.2 軟鍵盤實現

如圖3所示,首先建立了足項目要求的軟鍵盤的基本模型,接下來要實現的就是當按鍵響應時能夠讀出鍵盤值并將其發送出去,具體實現的流程如圖4所示。

圖4 軟鍵盤實現代碼流程圖Fig.4 Flow chart of soft keyboard code

圖4中,初始化按鍵時,可以使用QSignalMapper類[6]來捆綁不同按鍵所發送的一系列無參數信號,并將其轉發為有參數的信號:

QSignalMapper的主要應用為可以實現一個函數響應不同按鈕的功能,下面舉例來說明圖4的具體實現過程:

首先設置軟鍵盤界面名稱為ui,然后以數字鍵“1”為例:將在圖3中數字鍵1對應的按鍵名稱設為:n1,在圖4中的第(1)步中,建立鍵值“1”所對應的映射,代碼如下:

mapper->setMapping(ui.n1,"1");

接著,在圖4中的第(2)步,需要建立鍵值clicked對應的信號與槽之間的關系代碼如下:

最后,將所需要用到的字母或者數字通過上述方式連接到槽函數中。如圖4中的(3),將這些所要求得到的字母或者數字發送給焦點控件,代碼如下:

上面語句中sendcontent()函數為發射子函數,具體代碼如下:

語句(1)將焦點控件內的字母和數字發送出去,語句(2)清除發送框中的字母和數字,供下一次使用。

可以采用同樣的方式,對軟鍵盤中其它的按鍵進行映射函數和連接函數的編寫,然后在arm-linux-gcc環境下編譯,生成可以在arm板上運行的二進制文件。

3.3 下載到目標板上運行

本文的設計思路是:先將程序代碼在PC機上調試通過,然后將調試通過的程序代碼在RAM-linux-gcc環境下進行編譯,生成可以在RAM板上運行的二進制文件,最后將此二進制文件下載到目標板中。本文的前提是QT4.5.3環境已經移植到開發板上,具體移植步驟[7]在這里不作介紹。在終端上面,運行啟動軟鍵盤指令,命令行后面加上“-qws”指令,運行結果如圖5所示。

圖5 目標板上實現的軟鍵盤Fig.5 Soft keyboard design in the ARM board

圖5是在實際項目中需要的預設手機號碼的界面,在系統運行前要先設置手機號碼,以便系統故障時能夠自動的給對應的手機用戶發送預警信息,使用戶能夠實時的了解自己系統的運行狀態。在該界面中,準備預設手機號碼時,直接選擇打開軟鍵盤按鈕,圖3所示的預制的軟鍵盤會彈出界面,選擇要求預設的手機號碼值,完成之后選擇exit按鍵,軟鍵盤關閉。在此就可以用圖5所示的軟鍵盤完成手機號碼的預設。

4 結束語

隨著Linux操作系統的廣泛應用以及人們對GUI人機交互界面的更多需求,本文在linux操作系統的QT開發套件下,分析了軟鍵盤實現的原理,并完成了軟鍵盤的設計。此軟件盤可以根據用戶的要求來添加按鍵,與外部接入實體鍵盤相比,不僅便利,還節約成本。通過實踐證明此軟鍵盤具有較強的實時性和可靠性,可以廣泛的應用于各種QT界面中。

[1]丁林松,黃麗琴.QT4圖形設計與嵌入式開發[M].北京:人民郵電出版社,2009.

[2]陳樂,唐波,盧力.嵌入式環境下串行幀通信的設計與實現[J].現代電子技術,2010(23):60-62.

CHEN Le,TANG Bo,LU Li.Design and implementation of serial frame communication in embedded environment[J].Modern Electronic Technique,2010(23):60-62.

[3]倪繼利.Qt及Linux操作系統窗口設計[M].北京:電子工業出版社,2006.

[4]唐新華QT的信號與槽機制介紹 [EB/OL].[2005-09-20].http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/.

[5]吳岳.Linux C程序設計大全 [M].北京:清華大學出版社,2009.

[6]成潔,盧紫毅.Linux窗口程序設計—Qt4精彩實例分析[M].北京:清華大學出版社,2008.

[7]段昌平.Mini2440下移植QT4.4.3[EB/OL].[2009-04-06].http://duanyuxue.blog.163.com/blog/static/437315192009361124 36766/.

猜你喜歡
嵌入式界面信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
搭建基于Qt的嵌入式開發平臺
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
人機交互界面發展趨勢研究
基于LabVIEW的力加載信號采集與PID控制
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 亚洲中文无码h在线观看 | 国产精品成人免费综合| 制服丝袜一区二区三区在线| 国产在线一区视频| 欧美在线天堂| 国产视频欧美| 三级国产在线观看| 国产亚洲精品97在线观看| 色噜噜狠狠色综合网图区| 久久99精品久久久大学生| 国产伦片中文免费观看| www.亚洲一区二区三区| 亚洲swag精品自拍一区| 91免费片| 婷婷五月在线视频| 97狠狠操| 最新国产精品第1页| 综合五月天网| 国产一区三区二区中文在线| 国产97视频在线| 丁香五月亚洲综合在线| 天堂岛国av无码免费无禁网站 | 毛片在线播放a| 国产成人免费视频精品一区二区| 国产精品久久久精品三级| 无码福利视频| 91蜜芽尤物福利在线观看| av性天堂网| 国产毛片网站| 直接黄91麻豆网站| 伊人精品视频免费在线| 久久精品中文字幕少妇| 国产白丝av| 中文字幕亚洲无线码一区女同| 手机精品视频在线观看免费| 中文字幕调教一区二区视频| 18禁黄无遮挡免费动漫网站| 日本午夜影院| 国产玖玖玖精品视频| 99re精彩视频| 久久国产高潮流白浆免费观看| 亚洲青涩在线| 国产亚洲欧美日韩在线一区二区三区| 日韩一区二区三免费高清| 国产精品手机在线播放| 亚洲高清在线天堂精品| 伊人狠狠丁香婷婷综合色| 久久国产V一级毛多内射| 亚洲天堂视频在线播放| 国产精品任我爽爆在线播放6080 | 在线观看av永久| 日a本亚洲中文在线观看| 韩国v欧美v亚洲v日本v| 69综合网| 国产成人亚洲无码淙合青草| 亚洲高清中文字幕在线看不卡| 亚洲视频免费在线看| 免费观看成人久久网免费观看| 久热99这里只有精品视频6| 久久无码av一区二区三区| 国产国产人免费视频成18| 天天躁夜夜躁狠狠躁图片| 在线色国产| 亚洲91在线精品| 成人午夜免费视频| 欧美一级特黄aaaaaa在线看片| 欧美成人手机在线视频| 日韩在线中文| 四虎在线观看视频高清无码| 欧美一区中文字幕| 白浆视频在线观看| 一级香蕉视频在线观看| 综合色婷婷| 亚洲欧美另类久久久精品播放的| 久草视频中文| 国产精品片在线观看手机版| 午夜国产精品视频| 曰韩免费无码AV一区二区| 亚洲一区二区三区在线视频| 青青国产视频| 国产一区二区丝袜高跟鞋| 视频一区视频二区中文精品|