文章目錄1 項(xiàng)目前準(zhǔn)備2 軟件流程圖3 Linux應(yīng)用程序本項(xiàng)目為階段性練習(xí),內(nèi)容簡(jiǎn)潔實(shí)用,目的在于讓初學(xué)者能夠鞏固前面知識(shí),學(xué)以致用,逐步提升C++和Qt水平,為學(xué)習(xí)下面的教程做鋪墊。本章節(jié)使用的資料已經(jīng)放到了開(kāi)發(fā)板網(wǎng)盤(pán)資料中,路徑為“11_Linux系統(tǒng)開(kāi)發(fā)進(jìn)階\Qt開(kāi)發(fā)_章節(jié)使用資料”。 1 項(xiàng)目前準(zhǔn)備 工具及環(huán)境: 1.開(kāi)發(fā)環(huán)境:Ubuntu16.04 2.工具:Qt creator 3.迅為電子i.MX6ULL終結(jié)者開(kāi)發(fā)板 MX6ULL終結(jié)者開(kāi)發(fā)板已板載了DHT11傳感器,且提供的Linux鏡像和設(shè)備樹(shù)已配置好了dht11接口,dht11驅(qū)動(dòng)程序使用高版本Linux內(nèi)核自帶的穩(wěn)定驅(qū)動(dòng)程序,根文件系統(tǒng)使用網(wǎng)盤(pán)資料里的Yocto鏡像,使用手冊(cè)有詳細(xì)的系統(tǒng)移植和 Qt5移植步驟。開(kāi)發(fā)板要保證iio接口正常,如圖 1.1: cd /sys/bus/iio/devices/iio:device1 ![]() 多cat幾次, cat in_temp_input ,出現(xiàn)00為結(jié)尾的數(shù)字為正常 ![]() 2 軟件流程圖 本實(shí)驗(yàn)?zāi)康氖蔷毩?xí)Qt的使用。把dht11采集的溫度濕度顯示在觸摸屏的Qt上,并通過(guò)TCP傳輸?shù)絇C機(jī)的Qt界面上。應(yīng)用程序?qū)⒉杉降臄?shù)據(jù)利用UDP網(wǎng)絡(luò)套接字傳輸給終結(jié)者的 Qt進(jìn)程,終結(jié)者的Qt將數(shù)據(jù)轉(zhuǎn)發(fā)給PC端的Qt顯示界面。流程圖如圖 2.1: ![]() 3 Linux應(yīng)用程序 功能描述: 1.獲取溫濕度數(shù)據(jù)。 2.將溫濕度封裝成消息通過(guò)UDP發(fā)送到i.MX6ULL服務(wù)器。 高版本Linux內(nèi)核自帶了dht11 的驅(qū)動(dòng),使用者不用再去關(guān)心它的時(shí)序問(wèn)題,可以用標(biāo)準(zhǔn)IO讀取sysfs的/sys/bus/iio/devices/iio:device1/下的溫濕度端口,測(cè)試讀取成功后將數(shù)據(jù)發(fā)送到Qt進(jìn)程。 為了讓讀者更好地理解Qt的 UDP,所以此處沒(méi)有用到操作系統(tǒng)進(jìn)程間通信機(jī)制,直接使用UDP網(wǎng)絡(luò)套接字,代碼在readDHT11.c: ![]() ![]() ![]() ![]() 編譯:arm-linux-gnueabihf-gcc -o read readDHT11.c 4 終結(jié)者Qt服務(wù)器 Qt服務(wù)器功能描述: 1.接收應(yīng)用程序發(fā)來(lái)的數(shù)據(jù)并解析; 2.界面顯示出:溫濕度,PC客戶端的連接狀態(tài),系統(tǒng)時(shí)間; 3.通過(guò) TCP向 PC客戶端發(fā)送數(shù)據(jù)包。 4.1 界面布局 溫度顯示:LCD Number 濕度顯示:LCD Number 系統(tǒng)時(shí)間,連接狀態(tài)提示: Label 關(guān)閉按鈕:push Button Mainwindow.ui : ![]() 在屬性欄設(shè)置主窗口尺寸,寬度為1024,高度為600,添加兩個(gè)LCD Number組件,設(shè)置最小寬度500,最小高度為290,然后垂直布局兩個(gè)LCD Number,如:圖 4.1.2 ![]() 給LCD Number添加顏色,右擊此組件,選擇“改變樣式表”, ![]() 在彈出的界面選擇“添加顏色”,點(diǎn)擊“color”, ![]() 在彈出的顏色選擇框中選擇想要添加的顏色,然后點(diǎn)擊“OK”。 ![]() 自動(dòng)回到樣式表編輯器,可以看到添加的color,點(diǎn)擊”apply”,然后點(diǎn)擊”O(jiān)K”,發(fā)現(xiàn) LCD Number的顏色已經(jīng)改變,另外一個(gè) LCD Number的操作方法不再贅述。 ![]() 在主界面右上角添加兩個(gè) Label,一個(gè)用來(lái)顯示時(shí)間,一個(gè)顯示TCP連接狀態(tài),寬度500,高度130,垂直布局,如圖 4.1.7: ![]() 添加退出按鈕,設(shè)置最小高度80,最小寬度100,修改字體大小: ![]() 在按鈕左側(cè)添加 Label,最小寬度300,最小高度290,在按鈕和Label間添加彈簧,然后水平布局,效果如圖 4.1.9:. ![]() 點(diǎn)擊主窗口,然后點(diǎn)擊柵格布局,效果如圖 4.1.10: ![]() 最后改變各控件的名稱(chēng),方便在代碼中調(diào)用。 到此,服務(wù)器端基本ui界面組裝完成,讀者可以在此基礎(chǔ)上美化。 -迅為-i.MX6ULL開(kāi)發(fā)板-QT實(shí)戰(zhàn)項(xiàng)目DHT11&網(wǎng)絡(luò)編程實(shí)戰(zhàn)練習(xí)(二) |