亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于QT/E的嵌入式Linux系統(tǒng)的軟鍵盤實(shí)現(xiàn)

        2012-07-13 03:07:24劉守印
        電子設(shè)計(jì)工程 2012年5期
        關(guān)鍵詞:嵌入式界面信號(hào)

        謝 芬,潘 麗,劉守印

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

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

        1 QT/E體系結(jié)構(gòu)

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

        1)QT/E體系結(jié)構(gòu)[3]中的圖形引擎是通過相關(guān)的圖形算法和Framebuffer操作底層的硬件設(shè)備來實(shí)現(xiàn)的;事件驅(qū)動(dòng)則是通過底層的輸入輸出設(shè)備驅(qū)動(dòng)來實(shí)現(xiàn)對(duì)外界事件的響應(yīng)。

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

        圖1 QT/E體系結(jié)構(gòu)Fig.1 Structure diagram of QT/E

        2 QT/E通信機(jī)制

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

        當(dāng)對(duì)象改變其狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射 (emit)出去,這就是對(duì)象所要做的全部事情,它不知道另一端是誰在接收這個(gè)信號(hào)。這就是真正的信息封裝,它確保對(duì)象被當(dāng)作一個(gè)真正的軟件組件來使用。槽用于接收信號(hào),但它們是普通的對(duì)象成員函數(shù)。一個(gè)槽并不知道是否有任何信號(hào)與自己相連接。而且,對(duì)象并不了解具體的通信機(jī)制??梢詫⒑芏嘈盘?hào)與單個(gè)槽進(jìn)行連接,也可以將單個(gè)信號(hào)與很多槽進(jìn)行連接,甚至于將一個(gè)信號(hào)與另外一個(gè)信號(hào)相連接也是可能的。

        因此,整個(gè)QT窗口的設(shè)計(jì)簡(jiǎn)單、靈活且擴(kuò)展性好。信號(hào)與槽之間的鏈接一般用connect()函數(shù)來實(shí)現(xiàn),具體關(guān)聯(lián)方式和實(shí)現(xiàn)函數(shù)如圖2所示:

        圖2 信號(hào)與槽連接關(guān)系圖Fig.2 Connect diagram between signal and slot

        3 基于QT/E軟鍵盤的實(shí)現(xiàn)

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

        3.1 PC機(jī)x11環(huán)境下制定軟鍵盤的模型

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

        同理,在軟鍵盤區(qū)域內(nèi)拖入實(shí)際所需要按鍵個(gè)數(shù)的按鍵,根據(jù)所需要的鍵值修改每個(gè)按鍵上面的文本屬性和名字屬性。按照一般鍵盤的布局對(duì)它們進(jìn)行排列:

        圖3 x11環(huán)境下軟鍵盤排列圖Fig.3 Soft keyboard array diagram in xll

        3.2 軟鍵盤實(shí)現(xiàn)

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

        圖4 軟鍵盤實(shí)現(xiàn)代碼流程圖Fig.4 Flow chart of soft keyboard code

        圖4中,初始化按鍵時(shí),可以使用QSignalMapper類[6]來捆綁不同按鍵所發(fā)送的一系列無參數(shù)信號(hào),并將其轉(zhuǎn)發(fā)為有參數(shù)的信號(hào):

        QSignalMapper的主要應(yīng)用為可以實(shí)現(xiàn)一個(gè)函數(shù)響應(yīng)不同按鈕的功能,下面舉例來說明圖4的具體實(shí)現(xiàn)過程:

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

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

        接著,在圖4中的第(2)步,需要建立鍵值clicked對(duì)應(yīng)的信號(hào)與槽之間的關(guān)系代碼如下:

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

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

        語句(1)將焦點(diǎn)控件內(nèi)的字母和數(shù)字發(fā)送出去,語句(2)清除發(fā)送框中的字母和數(shù)字,供下一次使用。

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

        3.3 下載到目標(biāo)板上運(yùn)行

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

        圖5 目標(biāo)板上實(shí)現(xiàn)的軟鍵盤Fig.5 Soft keyboard design in the ARM board

        圖5是在實(shí)際項(xiàng)目中需要的預(yù)設(shè)手機(jī)號(hào)碼的界面,在系統(tǒng)運(yùn)行前要先設(shè)置手機(jī)號(hào)碼,以便系統(tǒng)故障時(shí)能夠自動(dòng)的給對(duì)應(yīng)的手機(jī)用戶發(fā)送預(yù)警信息,使用戶能夠?qū)崟r(shí)的了解自己系統(tǒng)的運(yùn)行狀態(tài)。在該界面中,準(zhǔn)備預(yù)設(shè)手機(jī)號(hào)碼時(shí),直接選擇打開軟鍵盤按鈕,圖3所示的預(yù)制的軟鍵盤會(huì)彈出界面,選擇要求預(yù)設(shè)的手機(jī)號(hào)碼值,完成之后選擇exit按鍵,軟鍵盤關(guān)閉。在此就可以用圖5所示的軟鍵盤完成手機(jī)號(hào)碼的預(yù)設(shè)。

        4 結(jié)束語

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

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

        [2]陳樂,唐波,盧力.嵌入式環(huán)境下串行幀通信的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),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操作系統(tǒng)窗口設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.

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

        [5]吳岳.Linux C程序設(shè)計(jì)大全 [M].北京:清華大學(xué)出版社,2009.

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

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

        猜你喜歡
        嵌入式界面信號(hào)
        信號(hào)
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        國(guó)企黨委前置研究的“四個(gè)界面”
        基于FPGA的多功能信號(hào)發(fā)生器的設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:42
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        人機(jī)交互界面發(fā)展趨勢(shì)研究
        基于LabVIEW的力加載信號(hào)采集與PID控制
        手機(jī)界面中圖形符號(hào)的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        蕾丝女同一区二区三区| 国产亚洲av人片在线观看| 秋霞影院亚洲国产精品| 人妻丝袜中文字幕久久| 毛片在线播放亚洲免费中文网 | 国产av夜夜欢一区二区三区| 亚洲精品字幕在线观看| 久久国产成人午夜av影院| 中文字幕日韩精品亚洲精品| 激情综合五月婷婷久久| 日本高清h色视频在线观看| 日本一本久道| 国产精品毛片大尺度激情| 久久黄色国产精品一区视频| 日本亚洲欧美色视频在线播放| 猫咪www免费人成网最新网站| 亚洲专区在线观看第三页| 日本在线观看不卡一区二区| 精品无码无人网站免费视频 | 亚洲 中文 欧美 日韩 在线| 大地资源中文第三页| 国产精品麻豆成人av| 日韩av一区二区观看| 国产网红主播无码精品| 欧美成人专区| 蜜桃av噜噜一区二区三区免费 | 国精品人妻无码一区二区三区性色| 国产第一页屁屁影院| 人妻无码人妻有码不卡| 中文字幕av素人专区| 免费女人高潮流视频在线观看| 国产精品 高清 尿 小便 嘘嘘| Jizz国产一区二区| 午夜av天堂精品一区| 国产亚洲一本大道中文在线| 中日韩欧美在线观看| 亚洲精品国产第一区三区| 蜜臀av在线观看| 欧美成人看片黄a免费看| 日本一区二区三区中文字幕视频| 亚洲网站一区在线播放|