基于電力線傳輸媒介的通信終端設(shè)計(jì)
處理抽象。本應(yīng)用中需要派生一個(gè)QTcp 類(lèi),實(shí)現(xiàn)傳輸層的TCP 協(xié)議。一般基于 TCP 的網(wǎng)絡(luò)應(yīng)用程序都要繼承QTcp 類(lèi),然后在ESTABLISHED 狀態(tài)中添加 子狀態(tài)完成特定的功能。在服務(wù)器端,利用量子框架實(shí)現(xiàn)一個(gè)QServer 類(lèi),是一個(gè)活動(dòng)對(duì)象,繼承自QTcp 類(lèi)。QServer 活動(dòng)對(duì)象同客戶端TCP Socket 連接后,進(jìn)入ESTABLISHED狀態(tài)中,通過(guò)調(diào)用Recvfrom 函數(shù)接收客戶端的請(qǐng)求,然后解析請(qǐng)求的服務(wù)類(lèi)型,根據(jù)不同請(qǐng)求做出不同的服務(wù)。其軟件流程圖如圖1 所示:
圖 1 QServer 活動(dòng)對(duì)象狀態(tài)流程圖
服務(wù)器端需要提供的具體服務(wù)包括:(1)當(dāng)接收到客戶端打開(kāi)家用電器的請(qǐng)求是,使用GPIO口發(fā)出電平信號(hào),通過(guò)繼電器打開(kāi)相關(guān)的電器。(2)監(jiān)控客廳中的溫度,在夏天如果超過(guò)33 度,則會(huì)主動(dòng)控制制冷空調(diào)打開(kāi)。在冬天低于10度就會(huì)打開(kāi)制熱空調(diào)。并及時(shí)地把空調(diào)開(kāi)關(guān)的信息通過(guò)TCP 協(xié)議傳送給遠(yuǎn)程的終端。(3)當(dāng)有人觸發(fā)了安防系統(tǒng),發(fā)生外部中斷時(shí),使用服務(wù)器向客戶端發(fā)送報(bào)警信號(hào)。并通過(guò)GPRS給110 報(bào)警臺(tái)、物業(yè)服務(wù)公司監(jiān)控室、業(yè)主辦公室電話或業(yè)主手機(jī)等,發(fā)送預(yù)警信息。
四、 PC 客戶端
PC 機(jī)作為遠(yuǎn)程客戶端,主要的工作是向服務(wù)器發(fā)出服務(wù)請(qǐng)求,并且在收到服務(wù)器的響應(yīng)或者報(bào)警信號(hào)后把收到的具體內(nèi)容在屏幕上顯示以達(dá)到遠(yuǎn)程控制和報(bào)警的功能。在本例中,我采用的是Qt 的可視化編程環(huán)境。以下介紹客戶端的具體功能以及實(shí)現(xiàn):在客戶端可視化界面上按下日光燈或者電飯煲按鈕,就可以向服務(wù)器端發(fā)送一個(gè)開(kāi)關(guān)家用電器的請(qǐng)求,在服務(wù)器端收到請(qǐng)求后就會(huì)去執(zhí)行;同理,按下A/D 按鈕,就可以發(fā)送一個(gè)讀取A/D 的請(qǐng)求,在收到服務(wù)器端采集的A/D 數(shù)值后,客戶端就會(huì)在屏幕上顯示;溫度的測(cè)量則是每隔兩秒就會(huì)發(fā)送一個(gè)請(qǐng)求,讀取當(dāng)前的溫度,顯示在屏幕上,并且判斷是否要打開(kāi)空調(diào),并從服務(wù)器端讀取其狀態(tài)信息,更新空調(diào)的開(kāi)關(guān)狀態(tài)欄,顯示在文本框中;當(dāng)服務(wù)器端安防系統(tǒng)檢測(cè)到有人入侵時(shí),就會(huì)向客戶端發(fā)送報(bào)警信號(hào),客戶端需要相應(yīng)修改當(dāng)前的安防系統(tǒng)狀態(tài)為報(bào)警。
評(píng)論