<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • ESM8000主板圖形界面編程簡介

     2021-11-2     作者:黃志超         

    1、概述


      英創(chuàng)公司推出的ESM8000主板搭載了NXP i.MX8M Mini Quad 64位異構(gòu)處理器,包含了一顆主頻1.6GHz的四核ARM Cortex-A53和一顆主頻400MHz 的ARM Cortex-M4,同時(shí)還搭配了GPU(圖形處理單元)和VPU(視頻處理單元),對于嵌入式應(yīng)用來說性能已經(jīng)非常強(qiáng)勁了。ESM8000主板上預(yù)裝的系統(tǒng)為Linux-5.4.47,為了支持圖形用戶界面,使用了Wayland作為主板的窗口系統(tǒng),并移植了基于Wayland的Qt,讓用戶可以通過Qt來開發(fā)圖形界面。


      Wayland可以看作是X11窗口系統(tǒng)的優(yōu)化升級版本,按照目前的趨勢會逐漸替代X11成為Linux系統(tǒng)最主流的窗口系統(tǒng)。他們之間最明顯的區(qū)別是Wayland使用Wayland Compositor替代了X11中的X Server和Compositor,將這兩部分合二為一,從而省去了很多不必要的繁瑣步驟,提高了整個(gè)窗口系統(tǒng)的效率,可以參考下面的示意圖:


    ESM8000主板圖形界面編程簡介.png

    X11結(jié)構(gòu)示意圖     Wayland結(jié)構(gòu)示意圖


      Wayland還是采用的服務(wù)器-客戶端模式,同時(shí)提供了一套完整的協(xié)議定義圖形用戶界面和輸入設(shè)備管理。其中Wayland Compositor既要負(fù)責(zé)繪制窗口,同時(shí)也作為Server端,我們在ESM8000主板中已經(jīng)移植了Wayland官方推薦的Weston(輕量級Wayland Compositor)。Weston會同時(shí)啟動一些Client,它們會負(fù)責(zé)系統(tǒng)全局的界面,比如窗口管理,繪制界面等操作。通過Client能夠方便的繪制、移動、管理圖形窗口,獲取鼠標(biāo)鍵盤等輸入事件。在實(shí)際開發(fā)的過程中,可以選擇通過Client自己繪制,或是在Client上通過更高層的如Qt,GTK+這些widget庫等進(jìn)行繪制。當(dāng)繪制完后Client會通知Weston執(zhí)行渲染操作,而ESM8000內(nèi)部有一個(gè)GPU圖形處理模塊(支持OpenGL ES 2.0),Weston會自動調(diào)用內(nèi)部的GPU對圖形渲染進(jìn)行加速,這樣能夠有效的降低CPU負(fù)載。對于Wayland這里就不做過多的介紹了,感興趣的客戶可以參考:https://wayland.freedesktop.org/查看詳細(xì)的資料。


      ESM8000主板上移植了Qt 5.15.0,根據(jù)上面的描述可以了解到,Qt能夠作為Wayland的Client端進(jìn)行繪制。所以我們推薦用戶在開發(fā)中直接使用Qt進(jìn)行應(yīng)用程序的開發(fā),這樣開發(fā)應(yīng)用程序更加快捷而且能夠容易的獲得統(tǒng)一的顯示效果。同時(shí)得益于Weston對ESM8000主板GPU的支持,在主板上運(yùn)行的Qt程序也能夠通過GPU對圖形渲染進(jìn)行加速。在ESM8000主板上支持標(biāo)準(zhǔn)的Qt C++編程以及QML腳本編程,用戶可以按照習(xí)慣選擇熟悉的方式來進(jìn)行開發(fā)。下面我們就以一個(gè)使用C++編程的簡單界面來演示ESM8000主板上Qt程序的顯示效果。


    2、Qt應(yīng)用程序開發(fā)簡介


      首先我們通過QtCreator創(chuàng)建一個(gè)Qt Widgets Application,根據(jù)實(shí)際情況選擇路徑以及構(gòu)建套件(Kit),這里選擇ESM8000的版本,如下圖所示:


    ESM8000主板圖形界面編程簡介.png


    ESM8000主板圖形界面編程簡介.png


      工程生成以后,會自動生成Widget類以及必要的C++代碼,我們可以在ui文件中,選擇拖入一些控件來查看效果,示例中主要加入了按鈕(pushButton)、下拉菜單(comoBox)以及顯示文字的標(biāo)簽(label):


    ESM8000主板圖形界面編程簡介.png


      在主板上運(yùn)行效果如下:


    ESM8000主板圖形界面編程簡介.png


      界面中最上面的工具欄是Weston自帶的weston-desktop-shell顯示的,用于負(fù)責(zé)界面全局窗口的管理(本質(zhì)上還是一個(gè)Wayland Client)。如果不需要顯示這個(gè)工具欄,在/etc/xdg/weston/weston.ini文件中增加對shell的配置,就可以去掉這個(gè)工具欄,如下圖:


    ESM8000主板圖形界面編程簡介.png


      保存該文件后重啟Weston就可以了:

      #> systemctl restart weston@root


      重新設(shè)置后,顯示效果如下:


    ESM8000主板圖形界面編程簡介.png


      如果需要窗口全屏,并且不想留下Widget的窗口控制欄,可以對Widget進(jìn)行全屏設(shè)置,代碼如下:


    MainWindow w;  
    w.showFullScreen();  
    w.show();


      顯示效果如下:


    ESM8000主板圖形界面編程簡介.png


      關(guān)于Qt的編程,在Qt的官網(wǎng)上也有詳細(xì)的說明和文檔,感興趣的客戶可以參考https://doc.qt.io/qt-5/qtexamplesandtutorials.html


    3、總結(jié)


      從本文的介紹中,可以看到通過傳統(tǒng)的Qt C++的方式進(jìn)行編程,對于嵌入式應(yīng)用來說已經(jīng)可以滿足大部分常規(guī)的界面設(shè)計(jì)需求,Qt常用的控件都能夠直接支持(如示例中按鈕、下拉菜單等)。


      但是目前應(yīng)用中比較多使用到的視頻監(jiān)控等內(nèi)容,由于要涉及到解碼等操作因此需要使用VPU(視頻處理單元),而Qt中提供的C++類qtmultimedia因?yàn)闊o法調(diào)用VPU,會自動采用軟件解碼,這樣會導(dǎo)致效率很低并且占用大量CPU資源。所以這時(shí)需要使用到QML或者在C++代碼中調(diào)用gstreamer來進(jìn)行處理,這部分操作我們會在后續(xù)的文章中詳細(xì)說明。

    亚洲A∨精品一区二区三区| 久久精品人妻中文系列| 久久久久久精品久久久 | 国产亚洲精品免费视频播放| 1313午夜精品久久午夜片| 国产精品99久久久久久www| …久久精品99久久香蕉国产| 九九在线精品视频专区| 国产成人亚综合91精品首页| 亚洲午夜精品在线| 柠檬福利精品视频导航| 亚洲性日韩精品一区二区三区| 亚洲精品123区在线观看| 久久99青青精品免费观看| 6一12呦女精品| 国产精品亚洲综合一区在线观看| 精品成人乱色一区二区| 无码国产精品一区二区免费式芒果 | 国产精品成人无码久久久| 国产精品夜色一区二区三区 | 日韩熟女精品一区二区三区| 精品午夜国产福利观看| 日产精品久久久久久久性色| 国产午夜精品一区理论片飘花| 国产成人精品一区二区三在线观看| 国产精品久久久久久久久| 久久只有这里的精品69| 亚洲日韩精品无码专区网址| 国产日韩久久久精品影院首页 | 柠檬福利精品视频导航| 久久人人爽人人精品视频| 日韩精品中文字幕第2页| 国内精品久久久久影视| 亚洲日韩一区精品射精| 精品乱码一区二区三区四区| 久久亚洲国产成人精品性色| 亚洲国产精品国自产拍AV| 手机看片在线精品观看| 久夜色精品国产一区二区三区| 国产成人精品福利网站在线观看| 国产午夜亚洲精品不卡免下载|