天天看點

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

釋出時間:2021-7-2 09:49    釋出者:落風 |編輯

文章目錄1 項目前準備2 軟體流程圖3 Linux應用程式本項目為階段性練習,内容簡潔實用,目的在于讓初學者能夠鞏固前面知識,學以緻用,逐漸提升C++和Qt水準,為學習下面的教程做鋪墊。本章節使用的資料已經放到了開發闆網盤資料中,路徑為“11_Linux系統開發進階\Qt開發_章節使用資料”。

1 項目前準備

工具及環境:

1.開發環境:Ubuntu16.04

2.工具:Qt creator

3.迅為電子i.MX6ULL終結者開發闆

MX6ULL終結者開發闆已闆載了DHT11傳感器,且提供的Linux鏡像和裝置樹已配置好了dht11接口,dht11驅動程式使用高版本Linux核心自帶的穩定驅動程式,根檔案系統使用網盤資料裡的Yocto鏡像,使用手冊有詳細的系統移植和 Qt5移植步驟。開發闆要保證iio接口正常,如圖 1.1:

cd /sys/bus/iio/devices/iio:device1

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
多cat幾次, cat in_temp_input ,出現00為結尾的數字為正常
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

2 軟體流程圖

本實驗目的是練習Qt的使用。把dht11采集的溫度濕度顯示在觸摸屏的Qt上,并通過TCP傳輸到PC機的Qt界面上。應用程式将采集到的資料利用UDP網絡套接字傳輸給終結者的 Qt程序,終結者的Qt将資料轉發給PC端的Qt顯示界面。流程圖如圖 2.1:

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

3 Linux應用程式

功能描述:

1.擷取溫濕度資料。

2.将溫濕度封裝成消息通過UDP發送到i.MX6ULL伺服器。

高版本Linux核心自帶了dht11 的驅動,使用者不用再去關心它的時序問題,可以用标準IO讀取sysfs的/sys/bus/iio/devices/iio:device1/下的溫濕度端口,測試讀取成功後将資料發送到Qt程序。

為了讓讀者更好地了解Qt的 UDP,是以此處沒有用到作業系統程序間通信機制,直接使用UDP網絡套接字,代碼在readDHT11.c:

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

編譯:arm-linux-gnueabihf-gcc -o read readDHT11.c

4 終結者Qt伺服器

Qt伺服器功能描述:

1.接收應用程式發來的資料并解析;

2.界面顯示出:溫濕度,PC用戶端的連接配接狀态,系統時間;

3.通過 TCP向 PC用戶端發送資料包。

4.1 界面布局

溫度顯示:LCD Number

濕度顯示:LCD Number

系統時間,連接配接狀态提示: Label

關閉按鈕:push Button

Mainwindow.ui :

迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
在屬性欄設定主視窗尺寸,寬度為1024,高度為600,添加兩個LCD Number元件,設定最小寬度500,最小高度為290,然後垂直布局兩個LCD Number,如:圖 4.1.2
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
給LCD Number添加顔色,右擊此元件,選擇“改變樣式表”,
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
在彈出的界面選擇“添加顔色”,點選“color”,
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
在彈出的顔色選擇框中選擇想要添加的顔色,然後點選“OK”。
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
自動回到樣式表編輯器,可以看到添加的color,點選”apply”,然後點選”OK”,發現 LCD Number的顔色已經改變,另外一個 LCD Number的操作方法不再贅述。
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
在主界面右上角添加兩個 Label,一個用來顯示時間,一個顯示TCP連接配接狀态,寬度500,高度130,垂直布局,如圖 4.1.7:
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
添加退出按鈕,設定最小高度80,最小寬度100,修改字型大小:
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
在按鈕左側添加 Label,最小寬度300,最小高度290,在按鈕和Label間添加彈簧,然後水準布局,效果如圖 4.1.9:.
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)
點選主視窗,然後點選栅格布局,效果如圖 4.1.10:
迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(一)

最後改變各控件的名稱,友善在代碼中調用。

到此,伺服器端基本ui界面組裝完成,讀者可以在此基礎上美化。

-迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(二)