《Qt嵌入式開發(fā)實戰(zhàn)從串口通信到JSON通信(微課視頻版)》針對嵌入式、物聯(lián)網(wǎng)開發(fā)的工程需求,在全面介紹UART接口、RS485接口等硬件接口的工作原理、調試方法的基礎上,介紹了Qt跨平臺開發(fā)的知識,如GUI編程、信號和槽、定時器、事件循環(huán)、HTTP和TCP通信等。尤其是著重介紹了網(wǎng)絡通信中常用的JSON的原理和cJSON庫的使用方法。本書以一個氣象站程序為例,對介紹的知識加以應用,同時展示了工程實踐中程序迭代升級的過程。 《Qt嵌入式開發(fā)實戰(zhàn)從串口通信到JSON通信(微課視頻版)》可以分為3部分:第一部分(第1章和第2章)主要介紹硬件接口知識,包括硬件接口(UART、RS485)、通信協(xié)議(Modbus)、調試工具(邏輯分析儀、串口調試助手)等的原理和使用方法;第二部分(第3~6章)主要介紹Qt開發(fā)的知識,包括GUI程序開發(fā)、控件、信號和槽、事件的使用等;第三部分(第7章和第8章)不但介紹了HTTP與TCP等協(xié)議原理、Qt進行網(wǎng)絡通信的方法,還結合中國移動OneNET物聯(lián)網(wǎng)平臺介紹了JSON數(shù)據(jù)交換格式和cJSON庫的使用等。 《Qt嵌入式開發(fā)實戰(zhàn)從串口通信到JSON通信(微課視頻版)》既可作為高等學校嵌入式、物聯(lián)網(wǎng)、自動化、微電子、通信工程、計算機等專業(yè)的教材,也可作為實踐案例供嵌入式、物聯(lián)網(wǎng)相關行業(yè)的研發(fā)人員和研究人員參考。
嵌入式、物聯(lián)網(wǎng)的開發(fā)與傳統(tǒng)的軟件開發(fā)不同,不僅要求研發(fā)人員具有一定的工程經(jīng)驗積累,還要具有軟件編程知識、硬件開發(fā)知識、網(wǎng)絡通信知識甚至云計算知識等。編者結合自身的教學經(jīng)驗和項目經(jīng)驗,對嵌入式、物聯(lián)網(wǎng)行業(yè)常用的UART和RS485接口、Qt開發(fā)平臺、網(wǎng)絡通信和JSON數(shù)據(jù)交換格式(含cJSON庫)這3部分內容進行詳細講解。本書主要特色如下:
? 貼近工程應用,實踐性強
圍繞簡易氣象站這一主題,從嵌入式項目開發(fā)的角度設計了一系列循序漸進、由淺入深的案例。
? 夯實硬件基礎,加深理解
不但講解了工程領域常用的UART接口、RS485接口、Modbus通信協(xié)議的工作原理和工作過程,還講解了工程上常用的邏輯分析儀、串口調試助手、網(wǎng)絡調試助手等測試工具。
? 資源配套齊全,便于教學
配套程序代碼、工具軟件、擴展閱讀、教學課件、教學大綱、電子教案等資源。
寫作背景
自從1999年Kevin Ashton提出了物聯(lián)網(wǎng)(Internet of Things,IoT)的概念后,經(jīng)過二十多年的發(fā)展,物聯(lián)網(wǎng)技術已經(jīng)走入了每個人的生活中。物聯(lián)網(wǎng)是新一代信息技術的重要組成部分,也是嵌入式技術和互聯(lián)網(wǎng)相互融合的產(chǎn)物。隨著智能設備、智能終端的不斷發(fā)展,物聯(lián)網(wǎng)技術和嵌入式技術變得密不可分。
2022年1月12日,國務院《十四五數(shù)字經(jīng)濟發(fā)展規(guī)劃》中提出要打造智慧共享的新型數(shù)字生活,加快既有住宅和社區(qū)設施數(shù)字化改造,打造智能樓宇、智能停車場、智能充電樁、智能垃圾箱等公共設施。2022年4月25日,國務院《關于進一步釋放消費潛力促進消費持續(xù)恢復的意見》指出,要推進第五代移動通信(5G)、物聯(lián)網(wǎng)、云計算、人工智能、大數(shù)據(jù)等領域標準研制。艾瑞咨詢系列研究報告(2022年第6期)指出,在2022年1~5月,僅智能家居行業(yè)投融資事件就達到了60次,涉及金額166億元人民幣。
不難看出,隨著數(shù)字經(jīng)濟政策上升至國家戰(zhàn)略,嵌入式、物聯(lián)網(wǎng)行業(yè)的春天來了。越來越多的高校畢業(yè)生和企業(yè)研發(fā)人員選擇這一領域作為職業(yè)發(fā)展方向。
但是嵌入式、物聯(lián)網(wǎng)的開發(fā)與傳統(tǒng)的軟件開發(fā)不同。它不僅要求研發(fā)人員具有一定的工程經(jīng)驗積累,還要具有軟件編程知識、硬件開發(fā)知識、網(wǎng)絡通信知識甚至云計算知識等。而且物聯(lián)網(wǎng)和嵌入式開發(fā)有著自己獨有的測試工具、調試方法。如果不了解這些方法,強行上馬必然會事倍功半。
針對這一現(xiàn)狀,編者結合自身的教學經(jīng)驗和項目經(jīng)驗,對嵌入式、物聯(lián)網(wǎng)行業(yè)常用的UART和RS485接口、Qt開發(fā)平臺、網(wǎng)絡通信和JSON數(shù)據(jù)交換格式(含cJSON庫)這3部分內容進行詳細講解。同時用一個不斷迭代更新的簡易氣象站程序貫穿這3部分內容,實現(xiàn)了知識學習和項目實踐的緊密結合。對于嵌入式、物聯(lián)網(wǎng)開發(fā)中必不可少的工具,如串口調試助手、網(wǎng)絡調試助手、邏輯分析儀等工具,本書也做了詳細的介紹。
內容框架
本書按照從硬件到軟件、從單機到網(wǎng)絡的思路,將內容劃分為硬件接口知識、Qt開發(fā)知識、網(wǎng)絡通信知識3部分。
(1) 硬件接口知識部分,包括第1章和第2章。這一部分介紹了常用硬件接口原理(包括UART接口、RS485接口)、Modbus通信協(xié)議原理、硬件模塊原理(包括GY39氣象信息模塊和PR3000風速風向模塊)和調試工具(包括邏輯分析儀和串口調試助手)的使用。
(2) Qt開發(fā)知識部分,包括第3~6章。Qt是一個開源的、跨平臺的C 開發(fā)庫,在嵌入式和物聯(lián)網(wǎng)行業(yè)有著廣泛的應用。這一部分先講解了C 開發(fā)的基礎知識,然后介紹了Qt的核心功能和常用模塊,如信號和槽、串口通信、事件、定時器、子窗口等。
(3) 網(wǎng)絡通信知識部分,包括第7章和第8章。這一部分以中國移動OneNET物聯(lián)網(wǎng)開放平臺為例,詳細講解了使用Qt進行TCP、HTTP網(wǎng)絡通信的原理和方法。同時著重講解了網(wǎng)絡通信中極為常用的JSON數(shù)據(jù)交換格式和cJSON庫的使用方法。
在各個章節(jié)的實踐案例部分,逐步帶領讀者完成了一個功能全面的氣象站控制程序。通過該程序的編寫和迭代升級,讀者可以獲取工程實踐中程序開發(fā)的經(jīng)驗。
特色亮點
1. 本書內容貼近工程應用,實踐性強
圍繞簡易氣象站這一主題,從嵌入式項目開發(fā)的角度設計了一系列循序漸進、由淺入深的案例。通過程序的不斷迭代和優(yōu)化,最終得到了功能完整的氣象站程序。
2. 本書注重夯實硬件基礎,加深理解
本書不但講解了工程領域常用的UART接口、RS485接口、Modbus通信協(xié)議的工作原理和工作過程,還講解了工程上常用的邏輯分析儀、串口調試助手、網(wǎng)絡調試助手等測試工具,從而使讀者加深對硬件工作原理的理解。
3. 本書關注嵌入式項目開發(fā)的痛點
隨著物聯(lián)網(wǎng)和5G技術的廣泛應用,萬物互聯(lián)即將成為現(xiàn)實。但是物聯(lián)網(wǎng)行業(yè)需要開發(fā)者掌握多方面的知識,大大提高了入門門檻。本書針對這一痛點,著重講解了網(wǎng)絡數(shù)據(jù)傳送、JSON和cJSON庫的使用等內容,幫助讀者優(yōu)化知識體系,步入萬物互聯(lián)的5G時代。
讀者對象
本書既可作為高等學校嵌入式、物聯(lián)網(wǎng)、自動化、微電子、通信工程、計算機等專業(yè)的教材,也可作為實踐案例供嵌入式、物聯(lián)網(wǎng)相關行業(yè)的研發(fā)人員參考。讀者應當具備一定的編程知識和電子電路知識。由于Qt是基于C 的開發(fā)平臺,本書安排了一章的內容幫助讀者進行C到C 的過渡。只有C語言基礎的讀者也無須擔心。
配套資源
程序代碼、工具軟件等資源: 掃描目錄上方的配套資源二維碼下載。
課件、大綱、教案等資源: 掃描封底的書圈二維碼在公眾號下載,或者到清華大學出版社官方網(wǎng)站本書頁面下載。
微課視頻(360分鐘,31集): 掃描書中相應章節(jié)中的二維碼在線學習。
本書配套了氣象站硬件,可以有效地提高學習效率。讀者可以根據(jù)附錄中的電路圖進行制作,但不可用于商業(yè)用途。
注: 請先掃描封底刮刮卡中的文泉云盤防盜碼進行綁定后再獲取配套資源。
致謝
本書既是江蘇省現(xiàn)代教育技術研究課題(2022R102343)和金陵科技學院產(chǎn)教融合型一流課程嵌入式系統(tǒng)設計建設的成果,也是編者所在單位與南京優(yōu)奈特信息科技有限公司(蘇嵌教育)開展校企合作人才培養(yǎng)的成果。
本書由曹珂、黃苗玉、張玉、鄧寬編寫,林新華、梁庚審稿。本書是幾位教師多年教學成果的反思和積累,隨著實際教學進行了多次歸納整理和更新。在此特別感謝陳正宇、王錦江、徐軍、陶永會、牛犇、劉飛、孫晨、王朕等教師和學生的大力支持。
本書在編寫過程中還參考了許多資料并列在參考文獻中,由于相關領域的資料浩如煙海,部分參考文獻可能會有所遺漏,在此向各位作者表示深深的謝意和歉意。
因編者水平有限,書中難免出現(xiàn)錯誤,懇請讀者批評指正。
編者
2023年4月
第1章準備工作(視頻講解: 25分鐘,2集)
1.1Qt的安裝和基本操作
1.1.1Qt和Qt Creator
1.1.2Windows平臺下Qt安裝
1.1.3樹莓派平臺下Qt的安裝
1.1.4Qt Creator的基本使用
1.2配套氣象站硬件介紹
1.2.1氣象站使用的硬件傳感器
1.2.2氣象站配套電路板
1.2.3氣象站硬件的使用方法
1.3本章小結
擴展閱讀: 扎根江蘇、服務全球的南京沁恒
第2章串行通信原理和硬件模塊的使用(視頻講解: 40分鐘,4集)
2.1UART接口簡介
2.1.1UART串行通信原理
2.1.2USB轉串口模塊的使用
2.1.3串口調試助手的使用
2.1.4串口數(shù)據(jù)的自發(fā)自收
2.2GY39氣象信息模塊的原理和使用
2.2.1模塊介紹
2.2.2數(shù)據(jù)包結構
2.2.3使用邏輯分析儀捕獲UART通信波形
2.2.4使用PC讀取硬件測量數(shù)據(jù)
2.3RS485通信接口和Modbus協(xié)議
2.3.1RS485接口原理
2.3.2Modbus協(xié)議原理
2.4PR3000風速風向模塊的原理和使用
2.4.1模塊介紹
2.4.2模塊地址的修改
2.4.3使用PC讀取硬件測量數(shù)據(jù)
2.5本章小結
擴展閱讀: 自動氣象站在我國的發(fā)展
第3章簡易C 基礎
(視頻講解: 43分鐘,5集)
3.1C和C
3.1.1C 簡史
3.1.2面向過程編程和面向對象編程
3.1.3面向對象編程的特征
3.2Hello, C !
3.2.1一個簡單的C 程序
3.2.2C 的基本輸入/輸出
3.2.3名稱空間
3.3函數(shù)和new運算符
3.3.1函數(shù)的默認參數(shù)
3.3.2函數(shù)重載
3.3.3new和delete運算符
3.4類和對象
3.4.1抽象、類和對象
3.4.2定義類和類對象
3.4.3構造函數(shù)和析構函數(shù)
3.4.4this指針
3.4.5靜態(tài)成員
3.5類的繼承和派生
3.5.1繼承和派生的概念
3.5.2類的3種繼承方式
3.5.3繼承和派生的實現(xiàn)
3.5.4派生類的使用
3.6本章小結
第4章Qt控件的使用和GUI程序設計基礎
(視頻講解: 46分鐘,3集)
4.1基礎知識
4.1.1Qt自帶控件的使用
4.1.2Qt特有的數(shù)據(jù)類型
4.1.3調試函數(shù)qDebug()的使用
4.2實踐案例: 簡易氣象站程序V0.1的實現(xiàn)
4.2.1程序整體規(guī)劃
4.2.2程序界面設計
4.2.3硬件模塊類的定義和實現(xiàn)
4.2.4模擬數(shù)據(jù)的生成
4.2.5報警功能的實現(xiàn)
4.2.6界面更新的實現(xiàn)
4.2.7日志輸出的實現(xiàn)
4.2.8程序的發(fā)布
4.3程序運行結果
4.4本章小結
擴展閱讀: 中國開發(fā)者對開源軟件的貢獻
第5章串口操作和第三方控件的使用(視頻講解: 43分鐘,4集)
5.1基礎知識
5.1.1Qt串口通信類的使用
5.1.2Qt的第三方控件庫QUC SDK
5.1.3窗口菜單的使用
5.2實踐案例: 簡易氣象站程序V0.2的實現(xiàn)
5.2.1使用QUC SDK升級程序界面
5.2.2串口操作功能的實現(xiàn)
5.2.3GY39模塊的數(shù)據(jù)讀取和處理
5.2.4PR3000模塊的數(shù)據(jù)讀取和處理
5.2.5界面更新函數(shù)的進一步修改
5.2.6手動讀取數(shù)據(jù)的實現(xiàn)
5.2.7菜單功能的實現(xiàn)
5.3程序運行結果
5.4本章小結
擴展閱讀: 阿里巴巴中國重要的開源參與者
第6章信號和槽、定時器、多窗口編程(視頻講解: 51分鐘,4集)
6.1基礎知識
6.1.1信號和槽的概念
6.1.2信號和槽的使用
6.1.3定時器的使用
6.1.4事件和事件過濾器的使用
6.1.5事件循環(huán)的使用
6.1.6子窗口的使用和窗口間的數(shù)據(jù)傳遞
6.1.7INI配置文件的使用
6.2實踐案例: 簡易氣象站程序V1.0的實現(xiàn)
6.2.1使用信號和槽改進程序
6.2.2使用定時器對程序進行改進
6.2.3手動輸入數(shù)據(jù)功能的實現(xiàn)
6.2.4使用配置文件保存程序參數(shù)
6.3程序運行結果
6.4本章小結
第7章使用TCP與中國移動物聯(lián)網(wǎng)平臺通信(視頻講解: 46分鐘,4集)
7.1基礎知識
7.1.1網(wǎng)絡通信基礎
7.1.2Qt進行TCP通信
7.1.3簡易TCP客戶端的編寫
7.1.4使用網(wǎng)絡調試助手測試TCP客戶端
7.1.5中國移動OneNET物聯(lián)網(wǎng)平臺的使用
7.1.6TCP解析腳本的編寫和使用
7.1.7使用網(wǎng)絡調試助手測試TCP解析腳本
7.2實踐案例: 簡易氣象站程序V2.0的實現(xiàn)
7.2.1TCP通信的實現(xiàn)
7.2.2TCP解析腳本的編寫
7.3程序運行結果
7.4本章小結
擴展閱讀: 我國云計算產(chǎn)業(yè)的發(fā)展
第8章使用HTTP與中國移動物聯(lián)網(wǎng)平臺通信(視頻講解: 66分鐘,5集)
8.1基礎知識
8.1.1HTTP簡介
8.1.2HTTP請求報文
8.1.3HTTP響應報文
8.1.4使用Qt進行HTTP通信
8.1.5JSON和cJSON庫
8.1.6使用cJSON庫生成JSON數(shù)據(jù)
8.1.7使用cJSON庫解析JSON數(shù)據(jù)
8.1.8OneNET平臺的數(shù)據(jù)在線展示功能
8.2實踐案例: 簡易氣象站程序V3.0的實現(xiàn)
8.2.1JSON數(shù)據(jù)的生成
8.2.2HTTP發(fā)送函數(shù)的實現(xiàn)
8.3程序運行結果
8.4本章小結
附錄A氣象站硬件原理圖
參考文獻