• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Qt5在ARM平臺(tái)移植的關(guān)鍵技術(shù)實(shí)現(xiàn)

    2018-09-18 09:56:54王春陽(yáng)張家坤楊海濤
    數(shù)碼設(shè)計(jì) 2018年2期
    關(guān)鍵詞:環(huán)境變量觸摸屏嵌入式

    王春陽(yáng),張家坤,楊海濤

    (北方民族大學(xué),計(jì)算機(jī)科學(xué)與工程學(xué)院,寧夏銀川,750021)

    引言

    隨著嵌入式系統(tǒng)的發(fā)展,在Linux下使用Qt開(kāi)發(fā)嵌入式圖形用戶界面是嵌入式應(yīng)用的重點(diǎn)[1]。Qt面向嵌入式系統(tǒng)圖形用戶界面的應(yīng)用程序開(kāi)發(fā)框架,其庫(kù)采用C++封裝,完全面向?qū)ο?,可移植性好[2],所以許多廠家都在使用Qt做為開(kāi)發(fā)平臺(tái),但是在從Qt4到Qt5的大版本更新中取消了QWS,使用了自己觸控模塊,導(dǎo)致Qt5無(wú)法在某些ARM平臺(tái)更改屏幕顯示方向,并且導(dǎo)致tslib作為觸控輸入的設(shè)備觸控失靈。對(duì)于工業(yè)應(yīng)用而言,人們習(xí)慣使用橫屏顯示并且使用tslib作為觸控輸入。Qt5在以上功能的改動(dòng)導(dǎo)致許多開(kāi)發(fā)人員在硬件選型上不得不更換對(duì)應(yīng)的硬件,增加開(kāi)發(fā)成本。由此可見(jiàn),使 Qt5在ARM平臺(tái)實(shí)現(xiàn)屏幕旋轉(zhuǎn)和校準(zhǔn)tslib觸控是非常重要的。

    1 技術(shù)實(shí)現(xiàn)原理

    1.1 屏幕翻轉(zhuǎn)實(shí)現(xiàn)原理

    使用 Qt5中的 QGraphicsScene、QGraphicsProxyWidget、QGraphicsView類(lèi)的相應(yīng)函數(shù)實(shí)現(xiàn)屏幕翻轉(zhuǎn)。這些類(lèi)的主要功能如下:

    QGraphicsScene對(duì)象是QGraphicsItem對(duì)象的容器[3],主要功能如下:

    (1)提供管理大量圖元的快速接口。

    (2)傳播鼠標(biāo)、鍵盤(pán)等事件給場(chǎng)景中的每個(gè)圖元。

    (3)管理圖元狀態(tài),如圖元選擇和焦點(diǎn)處理。

    (4)提供無(wú)變換的渲染功能,如打印。

    將需要旋轉(zhuǎn)的窗口加入QGraphicsScene場(chǎng)景中,用QGraphicsProxyWidget代理QGraphicsScene,并且利用QGraphicsProxyWidget的旋轉(zhuǎn)函數(shù)旋轉(zhuǎn)90度或者270度。下面是流程圖:

    圖1 屏幕翻轉(zhuǎn)流程圖

    1.2 觸控校準(zhǔn)實(shí)現(xiàn)原理

    tslib 是觸摸屏應(yīng)用級(jí)的一個(gè)程序庫(kù),用來(lái)封裝底層的觸摸屏驅(qū)動(dòng)的操作[4]。因?yàn)樵赒t4中只要配置好tslib的絕對(duì)路徑與頭文件和庫(kù)的路徑就可以使用tslib,但是Qt5增加了自己的觸控模塊,所以要使用tslib必須開(kāi)啟tslib模塊并且需要額外增加tslib的一個(gè)庫(kù)才可以正常使用tslib作為觸控輸入。

    2 具體實(shí)施方法

    2.1 屏幕翻轉(zhuǎn)實(shí)施方法

    (1)聲明QGraphicsScene類(lèi)的對(duì)象:

    QGraphics Scene*scene = new QGraphicsScene;

    (2)聲明QGraphicsProxyWidget類(lèi)對(duì)象,將要旋轉(zhuǎn)的窗口的指針作為參數(shù)加入scene中:

    QGraphicsProxyWidget*w = scene->addWidget(form);

    (3)設(shè)置將QGraphicsProxyWidget的對(duì)象翻轉(zhuǎn)90度:

    w->setRotation(90);

    (4)聲明QGraphicsView類(lèi)對(duì)象:

    QGraphicsView*view = new QGraphicsView(scene);

    (5)用resize函數(shù)調(diào)整view的大?。?/p>

    view->resize(1200,800);

    (6)用show函數(shù)將view顯示出來(lái):

    view->show();

    2.2 觸控校準(zhǔn)實(shí)施方法

    修改profile 文件,校準(zhǔn)文件的存放位置,觸摸屏設(shè)備,指定幀緩沖設(shè)備,tslib 庫(kù)文件路徑[5]。

    (1)在環(huán)境變量中增加QT_QPA_FB_TSLIB=1。

    因?yàn)镼t5取消了QWS增加了QPA,所以要使用tslib模塊作為觸控輸入必須使用QT_QPA_FB_TSLIB=1開(kāi)啟tslib模塊。

    (2)在環(huán)境變量中增加 LD_PRELOAD=$TSLIB_ROOT/lib/libts.so,$TSLIB_ROOT。

    TSLIB_ROOT是tslib所在絕對(duì)路徑。這樣就將tslib相應(yīng)的庫(kù)添加進(jìn)環(huán)境變量,然后更新環(huán)境變量。

    3 試驗(yàn)結(jié)果

    3.1 屏幕翻轉(zhuǎn)實(shí)驗(yàn)結(jié)果

    如圖2,通過(guò)本文所使用的方法,Qt的窗口已經(jīng)實(shí)現(xiàn)順時(shí)針90度的旋轉(zhuǎn)。此時(shí)將設(shè)計(jì)好的Qt程序移植在ARM平臺(tái)則屏幕也已經(jīng)順時(shí)針旋轉(zhuǎn)90度。本文所使用方法只能旋轉(zhuǎn)加入QGraphicsScene類(lèi)的窗口以及他們的子窗口。其他未加入QGraphicsScene類(lèi)的窗口并不會(huì)旋轉(zhuǎn)。

    圖2 屏幕旋轉(zhuǎn)結(jié)果

    3.2 觸控校準(zhǔn)實(shí)驗(yàn)結(jié)果

    沒(méi)有使用本文方法前,觸控命中率為 10%。通過(guò)本文所使用的方法校準(zhǔn)之后觸控命中率達(dá)到99%。

    4 結(jié)束語(yǔ)

    本文針對(duì)當(dāng)前Qt5在ARM設(shè)備上屏幕無(wú)法旋轉(zhuǎn)以及tslib觸控失靈的問(wèn)題提出了相應(yīng)的解決方法。通過(guò)本文所使用的方法解決了ARM設(shè)備屏幕無(wú)法旋轉(zhuǎn)的問(wèn)題以及tslib在Qt5上觸控失靈的問(wèn)題。

    [1]王浩南, 劉益成.基于嵌入式Linux系統(tǒng)下的Qt開(kāi)發(fā)[J].電腦開(kāi)發(fā)與應(yīng)用, 2010, 23(01): 11-13.

    [2]吳燕燕, 賀鋒濤.基于ARM9平臺(tái)上Qt/Embedded的移植與開(kāi)發(fā)[J].液晶與顯示, 2013, 28(02): 261-265.

    [3]陸文周.Qt5開(kāi)發(fā)及實(shí)例[M].北京: 電子工業(yè)出版社, 2015: 205.

    [4]張敏, 張井崗.Linux平臺(tái)下支持觸摸屏的Qt/Embedded移植[J].計(jì)算機(jī)技術(shù)與展, 2011, 21(10): 154-156+160.

    [5]舒明蕾, 華驚宇, 賴(lài)尚校.基于DM365平臺(tái)的Qt/Embedded移植[J].微型機(jī)與應(yīng)用, 2015, 34(05): 19-21.

    猜你喜歡
    環(huán)境變量觸摸屏嵌入式
    基于最大熵模型的云南思茅松潛在分布區(qū)
    從桌面右鍵菜單調(diào)用環(huán)境變量選項(xiàng)
    PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
    徹底弄懂Windows 10環(huán)境變量
    皮膚“長(zhǎng)”出觸摸屏
    搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
    基于三階段DEA—Malmquist模型的中國(guó)省域城鎮(zhèn)化效率測(cè)度及其收斂分析
    Altera加入嵌入式視覺(jué)聯(lián)盟
    倍福 CX8091嵌入式控制器
    惠州市| 广宁县| 潮安县| 景谷| 乡城县| 盈江县| 新营市| 利津县| 阳春市| 西乌珠穆沁旗| 武陟县| 门源| 陇南市| 城市| 砚山县| 商河县| 象州县| 驻马店市| 耿马| 南华县| 江达县| 武功县| 三江| 新建县| 固原市| 洛扎县| 自治县| 菏泽市| 龙江县| 海淀区| 台州市| 平陆县| 银川市| 三穗县| 奎屯市| 岐山县| 海晏县| 武陟县| 正镶白旗| 青阳县| 扬州市|