文章目錄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&網絡編程實戰練習(二) |