迅為-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 多cat幾次, cat in_temp_input ,出現00為結尾的數字為正常2 軟體流程圖 本實驗目的是練習Qt的使用。把dht11采集的溫度濕度顯示在觸摸屏的Qt上,并通過TCP傳輸到PC機的Qt界面上。應用程式将采集到的資料利用UDP網絡套接字傳輸給終結者的 Qt程序,終結者的Qt将資料轉發給PC端的Qt顯示界面。流程圖如圖 2.1: 3 Linux應用程式 功能描述: 1.擷取溫濕度資料。 2.将溫濕度封裝成消息通過UDP發送到i.MX6ULL伺服器。 高版本Linux核心自帶了dht11 的驅動,使用者不用再去關心它的時序問題,可以用标準IO讀取sysfs的/sys/bus/iio/devices/iio:device1/下的溫濕度端口,測試讀取成功後将資料發送到Qt程序。 為了讓讀者更好地了解Qt的 UDP,是以此處沒有用到作業系統程序間通信機制,直接使用UDP網絡套接字,代碼在readDHT11.c: 編譯: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 : 在屬性欄設定主視窗尺寸,寬度為1024,高度為600,添加兩個LCD Number元件,設定最小寬度500,最小高度為290,然後垂直布局兩個LCD Number,如:圖 4.1.2 給LCD Number添加顔色,右擊此元件,選擇“改變樣式表”, 在彈出的界面選擇“添加顔色”,點選“color”, 在彈出的顔色選擇框中選擇想要添加的顔色,然後點選“OK”。 自動回到樣式表編輯器,可以看到添加的color,點選”apply”,然後點選”OK”,發現 LCD Number的顔色已經改變,另外一個 LCD Number的操作方法不再贅述。 在主界面右上角添加兩個 Label,一個用來顯示時間,一個顯示TCP連接配接狀态,寬度500,高度130,垂直布局,如圖 4.1.7: 添加退出按鈕,設定最小高度80,最小寬度100,修改字型大小: 在按鈕左側添加 Label,最小寬度300,最小高度290,在按鈕和Label間添加彈簧,然後水準布局,效果如圖 4.1.9:. 點選主視窗,然後點選栅格布局,效果如圖 4.1.10:最後改變各控件的名稱,友善在代碼中調用。 到此,伺服器端基本ui界面組裝完成,讀者可以在此基礎上美化。 -迅為-i.MX6ULL開發闆-QT實戰項目DHT11&網絡程式設計實戰練習(二) |