????????嘿,小伙伴們,大家好!
????????在上一章中,小編講解了如何通過藍牙實現(xiàn)數(shù)據(jù)的傳送,達到下位機與上位機的通信。在這一章中,我將主要介紹上位機控件的設(shè)計。注意,這里我只講解針對本制作的上位機的設(shè)計,如果仍對《藍牙調(diào)試器》這塊軟件細節(jié)操作上不清楚的,可以自行摸索,同時也可參閱軟件開發(fā)者XLazyDog的文章(這位可是大佬,參加過電賽和智能車比賽的,而且還獲得國一)。
設(shè)計思路:
(1)數(shù)據(jù)采集,實時顯示
溫濕度:采用文本顯示數(shù)據(jù),能量槽顯示所占比例
空氣質(zhì)量:采用文本顯示顯示數(shù)據(jù)
測量距離:采用文本顯示數(shù)據(jù),同時采用Y-T一維波形圖顯示曲線(曲線-時間)
(2)藍牙控制,參數(shù)調(diào)整
溫濕度上下限、空氣質(zhì)量上限、安全距離均采用可編輯文本設(shè)置參數(shù)。
采用開關(guān)控件完成取消報警和啟動/停止電機的操作。
操作過程:


????????首先,進入專業(yè)調(diào)試界面,點擊下面的加號,工程名字輸入多功能時鐘(自定義),點擊確定,即新建了一個工程。點擊工程空白的地方,出現(xiàn)下拉菜單,點擊通信設(shè)置,此時進入數(shù)據(jù)包結(jié)構(gòu)設(shè)置。
????????這里,我先補充一下通信協(xié)議的知識點。一般來說,通信協(xié)議的數(shù)據(jù)結(jié)構(gòu)包括:起始字節(jié)、數(shù)據(jù)字節(jié)、校驗字節(jié)和結(jié)束字節(jié)。采用起始字節(jié)和結(jié)束字節(jié)是為了發(fā)送方和接收方的通信上的同步,而采用校驗字節(jié)是為了保證傳輸數(shù)據(jù)的準(zhǔn)確性。

? ? ? ? 在《藍牙調(diào)試器》里,開發(fā)者也是特別的用心,有數(shù)據(jù)包結(jié)構(gòu)的說明,點擊該界面右上角的問號,即可顯示。根據(jù)數(shù)據(jù)包說明,我們知道起始字節(jié),也就是包頭,為固定值0xA5,而校驗字節(jié)就是所有數(shù)據(jù)字節(jié)之和的低8位,結(jié)束字節(jié),也就是包尾,為固定值0x5A。我們寫程序要嚴(yán)格按照此通信協(xié)議嚴(yán)格執(zhí)行。

? ? ? ? 數(shù)據(jù)包結(jié)構(gòu)設(shè)置界面最下面有3個選擇項,我們先選擇接收數(shù)據(jù)包。我們需要實時顯示溫濕度、空氣質(zhì)量、測量距離、報警狀態(tài)和電機狀態(tài)。由于數(shù)據(jù)包數(shù)據(jù)類型是從上至下依次發(fā)送的,所以我們要注意數(shù)據(jù)的順序。我們在字節(jié)值中添加溫度、濕度、報警狀態(tài)和電機狀態(tài)。由于空氣質(zhì)量和距離可能會超過128(這里字節(jié)是有符號的,-127~128),所以選擇短整形添加進去。

????????我們再選擇發(fā)送數(shù)據(jù)包,在字節(jié)值里依次添加溫度上限、溫度下限、濕度上限、濕度下限、取消報警和啟停電機,在短整形里依次添加空氣指標(biāo)和安全距離。

? ??????最后,選擇通信模式,在通信模式設(shè)置里選擇"僅操作控件時發(fā)送",這里說一下,如果選擇"定時發(fā)送",由于接受頻率也很高,可能會出現(xiàn)通信堵塞的情況,當(dāng)然"不發(fā)送,僅接收"肯定不能選。后面的設(shè)置默認(rèn)即可。

????????此時,退出通信設(shè)置,進入編輯控件界面。為顯示溫度,我們可以做個文本顯示數(shù)值,再做個能量槽顯示比例(更直觀)。點擊加號,彈出添加控件框,選擇文本,此時,彈出"選擇要鏈接的數(shù)據(jù)"框,默認(rèn)Receive(即接收),選擇byte(字節(jié)),此時彈出剛才定義的變量數(shù)據(jù)框,選擇溫度即可。然后選擇一個能量槽,選擇溫度,此時要設(shè)置能量槽上下限,下限輸入0,上限輸入100即可。此時關(guān)于顯示溫度的控件就設(shè)計完成了。濕度、空氣質(zhì)量、距離也一樣。不過,我們可以利用"Y-T一維波形圖"來實時顯示距離的動態(tài)變化的趨勢,繪制相關(guān)的曲線。同樣的方法,鏈接好距離變量即可。由于我們需要設(shè)置一些閾值,這里可以通過可編輯文本來實現(xiàn),這里不再闡述。報警狀態(tài)和電機狀態(tài)也可以通過文本實現(xiàn),即0表示沒有報警(或電機關(guān)閉),1表示有報警(或電機啟動)(這里為了方便,統(tǒng)一用字節(jié),沒有用布爾類型)。取消報警和啟停電機(這里是強制啟動電機的)可以用開關(guān)來作為操作控件。

? ? ? ? 到此為止,只要適當(dāng)?shù)夭季忠幌驴丶?,上位機控件設(shè)計的工作就完成了。
????????通過本章的學(xué)習(xí),我相信,大家對于上位機控件設(shè)計這塊應(yīng)該是挺有興趣的,因為這個不需要編寫任何代碼,即可設(shè)計出兼容我們項目的上位機界面來,相當(dāng)?shù)糜腥?。?dāng)然,我們?nèi)匀恍枰鶕?jù)通信協(xié)議的規(guī)定,來完成下位機的代碼開發(fā),從而實現(xiàn)數(shù)據(jù)的監(jiān)控。
? ??????最后,還是要感謝這位簡書網(wǎng)名為XLazyDog的開發(fā)者,水平很高,開發(fā)的軟件,是目前我使用過的最好的一款,再這里,表達真心的感謝!