天天看點

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

不久前米爾在面包闆網站進行了MYD-C8MMX開發闆的試用活動,引起廣大愛好者的熱烈反應,并且産出了不少傑出的作品,下面來看這位工程師是怎麼用QT控制台應用程式控制LED亮滅的吧:

轉眼間距上次發【MYC-C8MMX物聯網開發闆】硬體介紹的文章兩周過去了,在嵌入式Linux開發的道路上艱難地行走着。

今天,我給大家帶來一個什麼應用呢?

由于筆者手頭配件有限,就先利用【MYC-C8MMX物聯網開發闆】闆載的物件:2個LED燈,來實作QT控制台應用程式對其的控制,以驗證【MYC-C8MMX物聯網開發闆】的軟體開發環境搭建正确性。

好了,話不多說,先貼一張【MYC-C8MMX物聯網開發闆】程式調試時的硬體開發環境圖吧!

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

看程式運作後的效果圖吧!

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

接着,筆者就給夥伴們分享一下自己的開發過程,期望起到抛磚引玉的作用,期待夥伴們更加豐富多彩的應用o(* ̄︶ ̄*)o。經過兩周的琢磨,現在基于【MYC-C8MMX物聯網開發闆】的嵌入式Linux開發有了一個基本的了解,現在給夥伴們分享一下筆者的學習心得。繼上篇文章了解了【MYC-C8MMX物聯網開發闆】的硬體之後,筆者又建立了軟體開發環境,然後在開發環境下進行了簡單的應用程式開發,基本流程如下:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

嗨!由于個人能力有限,目前僅走到了第3步:【簡單的QT應用程式開發】,在此筆者抛磚引玉,希望看到夥伴們【具體物聯網應用開發】的文章。拿到【MYC-C8MMX物聯網開發闆】之初,就發現開發闆出廠内置核心版本為4.14.98的嵌入式Linux作業系統,果斷地選擇利用内置作業系統作為應用程式的運作環境。然後,就自然而然地來到了【建立開發環境(基于QT)】的環節。

基于QT的嵌入式Linux開發環境建立的具體步驟如下:1. 先在自己的PC機上安裝Linux作業系統筆者使用是之前在某國産作業系統(基于Linux核心的)的QT應用程式開發時安裝的Ubuntu 16.04 64bit的LTS版本,當然我是采用VM15 pro虛拟機上安裝的,在這裡強調一下,個人開發嵌入式Linux程式安裝虛拟機即可,筆者采用虛拟機的共享檔案夾的方式,可以将Windows下的某個檔案夾共享給Ubuntu,解壓檔案、運作程式等操作均可正常執行,十分地友善,有時給虛拟機配置設定的硬碟空間不夠用的時候,采用此方法就可以将占用空間的内容直接放在原Windows某個目錄下,然後開VM共享即可,簡單友善。話不多說,分享一張筆者的基于【MYC-C8MMX物聯網開發闆】的開發環境圖檔:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

看着比較亂吧!其中,背景為QT5.9.4應用的QT Creator界面,左下角是官方提供的序列槽操作示例(不過本帖内容不涉及序列槽驅動哦!),又上角為通過PuTTY建立的與【MYC-C8MMX物聯網開發闆】之間的遠端登入界面。

2. 在Ubuntu作業系統中安裝工具軟體在終端中依次輸入以下兩條指令即可:

apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev u-boot-tools apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc           

其中,apt-get install為Ubuntu中安裝軟體的指令符,其後的每個字段為一個待安裝的軟體,這些軟體有35個之多,回憶兩周前我安裝這些工具包就花了大概2天(零零散散)的時間(晚上輸入指令讓PC自己安裝呗o(* ̄︶ ̄*)o)。

3. 在Ubuntu作業系統中安裝交叉編譯工具鍊交叉編譯工具鍊是在一種平台上(一般為X86 PC平台)編譯出能運作在體系結構不同的另一種平台上(例如ARM平台)的程式,雖然兩個平台用的都是Linux系統,但是編譯得到的程式在X86 PC平台上是不能運作的,必須放到ARM平台上才能運作。這裡筆者使用米爾官方随闆提供的Yocto交叉編譯器:gcc version 7.3.0(GCC),其是以SDK工具包方式來提供的,需要先安裝SDK包後,該交叉編譯工具鍊才可使用,記錄好安裝路徑,後續QT中編譯器的配置還要用到。

4. 安裝QtCreatorQT軟體想必做過嵌入式Linux開發的夥伴都有所了解,筆者是在給某産作業系統開發視窗軟體時接觸到的,其特點是:“一套代碼,到處編譯”,當然這多少有點誇張了,對于底層的資料擷取,例如:CPU使用率、記憶體占用率等,仍需要針對具體平台(Windows、Linux、IOS)分别編寫代碼,對于嵌入式Linux來說,其中涉及底層硬體調用的函數自然也會因配套使用的硬體的不同,帶來底層函數調用的差異,是以,對于此次基于【MYC-C8MMX物聯網開發闆】的程式開發來說,首先熟悉硬體驅動是很有必要的,所謂萬丈高樓平地起嘛!o(* ̄︶ ̄*)o

Qt的版本有許多,這裡根據官方推薦,選擇Qt5.9.4版本,夥伴們可以直接從QT官網上下載下傳,位址:http://download.qt.io/archive/qt/5.9/5.9.4/,此檔案夾下有多個檔案,由于現在目前市面上流行的大部分都是基于X86或X64 CPU的計算機,是以,選擇【qt-opensource-linux-x64-5.9.4.run】可執行檔案直接運作安裝即可,但如果夥伴們碰巧使用的就是那少數的國産CPU的計算機,那麼則需要下載下傳QT源碼,在拟進行QT應用程式開發的計算機上編譯後再運作安裝,哦!跑題了,言歸正傳,話說接下來要幹什麼呢?當然是要對剛剛安裝好的QT進行配置了。

5. 配置QtCreator配置QT的目的,在于使用QtCreator編寫好代碼後,仍需要将代碼編譯後再能生成在目标平台上可執行的程式,而配置QT則是對QT的編譯環境進行配置,包括:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

【配置一個GCC和G++編譯器】其實就是分别建立一個GCC和G++編譯器,并使其分别指向【3.在Ubuntu作業系統中安裝交叉編譯工具鍊】中交叉編譯工具鍊所在安裝目錄中的【aarch64-poky-linux-gcc】和【aarch64-poky-linux-g++】交叉編譯器。【配置一個QTversion】其實就是給QT配置一個build system,這裡将其指向【3.在Ubuntu作業系統中安裝交叉編譯工具鍊】中交叉編譯工具鍊所在安裝目錄中的【qt5/qmake】。【配置一QTdebug】其實就是建立一個Debugger,并将其指向【3.在Ubuntu作業系統中安裝交叉編譯工具鍊】中交叉編譯工具鍊所在安裝目錄中的【aarch64-poky-linux-gdb】。【新增一個Device裝置】其實就是建立一個Device,并配置【MYC-C8MMX物聯網開發闆】所在的IP位址、SSH端口、使用者名(root)、密碼(無),其實這些參數就是在QT與【MYC-C8MMX物聯網開發闆】通過TCP/IP網絡建立一個SSH,即遠端登入。【建立一個kit】就是把上述4步的配置組合配置在一起。

上述步驟,筆者并未給出詳細的配置内容,如果想了解這方面的内容,可以參考文章開始部分提供下載下傳的【基于QT的嵌入式Linux開發環境建立的手冊】,裡面有米爾官方給出的詳細配置步驟。至此,就針對【MYC-C8MMX物聯網開發闆】在Ubuntu上建立起了基于QT的嵌入式Linux開發環境了。接下來,我們就可以編寫一個簡單的QT應用程式,檢驗一下QT安裝及其配置是否成功吧!o(* ̄︶ ̄*)o建立項目的步驟筆者就略過了,直接分享一個筆者依據官方提供的硬體LED驅動代碼,編寫的一個通過QT控制台應用程式控制【MYC-C8MMX物聯網開發闆】上兩個LED燈亮滅的程式吧!話不多說,貼上代碼先:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

leds_ctrl和leds_play兩個函數的代碼如下:當然,這裡我沒有使用leds_play函數,該函數是讓LED閃爍的函數,有興趣的夥伴們可以自己試試哦!o(* ̄︶ ̄*)o

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

上述LED_Control程式經過QT編譯後,生成【LED_Control】可執行檔案,然後将該檔案拷貝到【MYC-C8MMX物聯網開發闆】上,運作試試看吧!程式運作後的控制台如下圖所示:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

當夥伴們不知道如何輸入時,可以像其他控制台程式一樣,輸入“help”檢視一下哦!o(* ̄︶ ̄*)o運作【LED_Control】後,【MYC-C8MMX物聯網開發闆】開發闆上的兩個LED燈均熄滅,如下圖所示:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

随後顯示[LED]:輸入提示符,此時輸入1後,【MYC-C8MMX物聯網開發闆】開發闆上LED18燈亮,如下圖所示:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

随後顯示[LED]:輸入提示符,此時輸入2後,【MYC-C8MMX物聯網開發闆】開發闆上LED19燈亮,如下圖所示:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

随後顯示[LED]:輸入提示符,此時輸入3後,【MYC-C8MMX物聯網開發闆】開發闆上2個LED燈均亮,如下圖所示:

linux qt界面開發_用QT控制台應用程式控制IMX8M mini開發闆的LED亮滅

繼續閱讀