首頁(yè)>>>技術(shù)>>>多媒體通信終端  VoIP終端產(chǎn)品

基于電力線(xiàn)傳輸媒介的通信終端設計分析

2010/11/09

  摘要:本文開(kāi)發(fā)一種基于電力線(xiàn)傳輸媒介的數據通信終端,該系統完全兼容HomePlug 標準,具有成本低、速度高、保密性好的諸多優(yōu)勢,能夠用于構建電力線(xiàn)網(wǎng)絡(luò ),實(shí)現諸如視頻點(diǎn)播、VoIP、遠程監控等數字化、智能化系統的高速信息交互。網(wǎng)絡(luò )終端可以完成電力線(xiàn)數據包和以太網(wǎng)數據包的轉換,因此便于如同開(kāi)發(fā)一般以太網(wǎng)應用系統一樣地實(shí)現電力線(xiàn)通信的應用系統開(kāi)發(fā)。

  電力線(xiàn)寬帶通信技術(shù)(PowerLine Communication 簡(jiǎn)稱(chēng)PLC)是近幾年來(lái)迅速發(fā)展起來(lái)的一種新興的利用電力線(xiàn)網(wǎng)絡(luò )作為載體的通信技術(shù)。運用嵌入式系統和電力線(xiàn)調制解調技術(shù)所構建的電力線(xiàn)網(wǎng)絡(luò )通訊終端,人們可以很方便地在辦公室、家庭內部、工業(yè)現場(chǎng)輕松地組建起局域網(wǎng)絡(luò ),成為智能家庭、分布式工業(yè)過(guò)程控制的一種很好的系統構造方式,具有廣闊的應用前景和市場(chǎng)。本應用系統利用電力線(xiàn)終端平臺和路由器構建電力線(xiàn)家庭內部網(wǎng)絡(luò ),實(shí)現家電、安全防范及三表的集中管理;對外通過(guò)寬帶連接Internet,遠程終端通過(guò)軟件就可以對家用電器進(jìn)行狀態(tài)查詢(xún)和控制。具體的構建方式,在每個(gè)房間和客廳、廚房中安放一個(gè)電力線(xiàn)通訊終端平臺,掛載在電力線(xiàn)上形成家庭內部網(wǎng)絡(luò ),集中管理所有的電器,同時(shí)利用電力線(xiàn)調制解調模塊連接路由器,通過(guò)ADSL 上網(wǎng)的方式,把整個(gè)家庭內部網(wǎng)絡(luò )與Internet 交互,使得遠程終端可以通過(guò)Internet 網(wǎng)絡(luò )訪(fǎng)問(wèn)家庭內部局域網(wǎng)。

一、系統的功能與設計

  本應用系統實(shí)現的主要功能如下:

  1) 實(shí)時(shí)監控客廳中的溫度,比如:在夏天如果超過(guò)33 度,系統會(huì )主動(dòng)控制制冷空調打開(kāi);在冬天低于10 度則會(huì )打開(kāi)制熱空調。

  2) 住宅安防系統能夠通過(guò)連接電力線(xiàn)通訊終端平臺和與之互連的GPRS上傳安保信息,比如:當發(fā)生有人非法進(jìn)入住宅,系統會(huì )實(shí)時(shí)通過(guò)Internet 網(wǎng)絡(luò )向事先設置的報警接收終端,如110 報警臺、物業(yè)服務(wù)公司監控室、業(yè)主辦公室電話(huà)或業(yè)主手機等,發(fā)送預警信息。

  3) 主人可以通過(guò)遠程終端訪(fǎng)問(wèn)家用電器,并且實(shí)行遠程控制,比如開(kāi)關(guān)日光燈、打開(kāi)電飯煲,這樣下班回家后就可以吃到香噴噴的米飯。

  為了實(shí)現上述功能,利用CPU 模塊上LPC2210 的GPIO(通用I/O)口連接繼電器控制家用電器的開(kāi)關(guān),比如:電飯煲、空調和日光燈等;利用芯片外部中斷連接安防系統,當系統報警時(shí)觸發(fā)外部中斷通知ARMCPU 使用GPRS 發(fā)送報警信息;同時(shí),在硬件電路上安裝有LED 燈、A/D 轉換電路用以實(shí)時(shí)測試、顯示當前各種家用電器的運行狀態(tài)。該應用系統涉及到電力線(xiàn)通訊平臺的編程和PC 的編程兩方面。其中CPU 模塊(下位機)作為服務(wù)器端,使用TCP 作為通訊協(xié)議,提供服務(wù)。在服務(wù)器端收到服務(wù)請求后,解析請求,根據不同的請求做出相應的服務(wù)。而PC 作為客戶(hù)端發(fā)出服務(wù)請求,并且在收到服務(wù)器的響應后把具體內容在屏幕上顯示出來(lái)。在本例中,客戶(hù)端采用Qt 可視化編程環(huán)境。以下,首先介紹Qt 的相關(guān)知識,然后再具體分為服務(wù)器和客戶(hù)端具體的對該應用設計進(jìn)行分析。

二、Qt 介紹

  Qt 是一個(gè)全面的C++應用程序開(kāi)發(fā)框架。它包含一個(gè)類(lèi)庫和用于跨平臺及國際化開(kāi)發(fā)的工具。Qt 是一個(gè)全面的開(kāi)發(fā)框架,它包括廣泛的特征,性能與工具,可以開(kāi)發(fā)高性能,跨平臺的客戶(hù)端,以及服務(wù)器端的應用程序。

  同時(shí)Qt 對不同平臺(Unix, Windows, and Mac)的專(zhuān)門(mén)API 進(jìn)行了封裝,如文件處理、網(wǎng)絡(luò )(操作,協(xié)議),進(jìn)程處理、線(xiàn)程、數據庫訪(fǎng)問(wèn)等。統一的跨平臺API 讓程序員們集中精力致力于可增值的技術(shù)革新,而無(wú)須擔心維護和管理現有應用程序多版本的基礎結構與界面。Qt 已由成千上成商業(yè)與開(kāi)放源應用程序開(kāi)發(fā)員,在多個(gè)操作系統與編譯器上進(jìn)行了測試,奠定了高性能與資源性應用程序的基礎。Qt 無(wú)須“虛擬器”,模擬層或大容量的運行時(shí)間環(huán)境。它如本地化的應用程序一樣,直接寫(xiě)入低級的圖形函數,因而Qt 程序能以源代碼速度執行。通過(guò)使用 Trolltech 的雙重授權模式,Qt 在商業(yè)支持并行之有效的框架下,呈現出開(kāi)放源的所有優(yōu)勢:開(kāi)放源優(yōu)勢包括一個(gè)活動(dòng)的開(kāi)放源開(kāi)發(fā)員社團。由于Qt的不間斷開(kāi)發(fā),以及完整的代碼透明性,允許Qt 開(kāi)發(fā)員進(jìn)行“徹底深入地查看” ,進(jìn)行自定義并擴展Qt 來(lái)滿(mǎn)足其獨特的需求。 商業(yè)產(chǎn)品的擔保包括客戶(hù)認可的產(chǎn)品支持,專(zhuān)門(mén)的Qt 開(kāi)發(fā)小組,以及一個(gè)第三方工具、組件與服務(wù)的成長(cháng)生態(tài)體系。

  (1)信號

  當某個(gè)信號其客戶(hù)或所有者發(fā)生內部狀態(tài)改變時(shí),信號被一個(gè)對象發(fā)射。只有定義過(guò)這個(gè)信號的類(lèi)及其派生類(lèi)能夠發(fā)射這個(gè)信號。當一個(gè)信號被發(fā)射時(shí),與其相關(guān)聯(lián)的槽將被立刻執行,就象一個(gè)正常的函數調用一樣。信號-槽機制完全獨立于 任何GUI 事件循環(huán)。只有當所有的槽返回以后發(fā)射函數(emit)才返回。 如果存在多個(gè)槽與某個(gè)信號相關(guān)聯(lián),那么,當這個(gè)信號被發(fā)射時(shí),這些槽將會(huì )一個(gè)接一個(gè)地 執行,但是它們執行的順序將會(huì )是隨機的、不確定的,我們不能人為地指定哪個(gè)先執行、哪個(gè)后執行。信號的聲明是在頭文件中進(jìn)行的,Qt 的signals 關(guān)鍵字指出進(jìn)入了信號聲明區,隨后即可 聲明自己的信號。

  (2)槽

  槽是普通的C++成員函數,可以被正常調用,它們唯一的特殊性就是很多信號可以與其相關(guān)聯(lián)。當與其關(guān)聯(lián)的信號被發(fā)射時(shí),這個(gè)槽就會(huì )被調用。槽可以有參數,但槽的參數不能有缺省值。既然槽是普通的成員函數,因此與其它的函數一樣,它們也有存取權限。槽的存取權限決定了誰(shuí)能夠與其相關(guān)聯(lián)。同普通的C++成員函數一樣,槽函數也分為三種類(lèi)型,即public slots、private slots 和protected slots。

三、服務(wù)器端

  在本應用中,電力線(xiàn)通訊終端平臺連接家用電器作為服務(wù)器端,在實(shí)時(shí)顯示用電器狀態(tài)的同時(shí),需要構建一個(gè)TCP 服務(wù)器來(lái)為遠程終端提供服務(wù),實(shí)現遠程控制和報警的功能。在基于QF 操作系統的網(wǎng)絡(luò )協(xié)議棧中,由QL4 接口類(lèi)來(lái)實(shí)現對L4 協(xié)議(傳輸層)的解析和處理抽象。本應用中需要派生一個(gè)QTcp 類(lèi),實(shí)現傳輸層的TCP 協(xié)議。

  處理抽象。本應用中需要派生一個(gè)QTcp 類(lèi),實(shí)現傳輸層的TCP 協(xié)議。一般基于 TCP 的網(wǎng)絡(luò )應用程序都要繼承QTcp 類(lèi),然后在ESTABLISHED 狀態(tài)中添加 子狀態(tài)完成特定的功能。在服務(wù)器端,利用量子框架實(shí)現一個(gè)QServer 類(lèi),是一個(gè)活動(dòng)對象,繼承自QTcp 類(lèi)。QServer 活動(dòng)對象同客戶(hù)端TCP Socket 連接后,進(jìn)入ESTABLISHED狀態(tài)中,通過(guò)調用Recvfrom 函數接收客戶(hù)端的請求,然后解析請求的服務(wù)類(lèi)型,根據不同請求做出不同的服務(wù)。其軟件流程圖如圖1 所示:


圖:QServer 活動(dòng)對象狀態(tài)流程圖

  服務(wù)器端需要提供的具體服務(wù)包括:

  (1)當接收到客戶(hù)端打開(kāi)家用電器的請求是,使用GPIO口發(fā)出電平信號,通過(guò)繼電器打開(kāi)相關(guān)的電器。

  (2)監控客廳中的溫度,在夏天如果超過(guò)33 度,則會(huì )主動(dòng)控制制冷空調打開(kāi)。在冬天低于10度就會(huì )打開(kāi)制熱空調。并及時(shí)地把空調開(kāi)關(guān)的信息通過(guò)TCP 協(xié)議傳送給遠程的終端。

  (3)當有人觸發(fā)了安防系統,發(fā)生外部中斷時(shí),使用服務(wù)器向客戶(hù)端發(fā)送報警信號。并通過(guò)GPRS給110 報警臺、物業(yè)服務(wù)公司監控室、業(yè)主辦公室電話(huà)或業(yè)主手機等,發(fā)送預警信息。

四、 PC 客戶(hù)端

  PC 機作為遠程客戶(hù)端,主要的工作是向服務(wù)器發(fā)出服務(wù)請求,并且在收到服務(wù)器的響應或者報警信號后把收到的具體內容在屏幕上顯示以達到遠程控制和報警的功能。在本例中,我采用的是Qt 的可視化編程環(huán)境。以下介紹客戶(hù)端的具體功能以及實(shí)現:在客戶(hù)端可視化界面上按下日光燈或者電飯煲按鈕,就可以向服務(wù)器端發(fā)送一個(gè)開(kāi)關(guān)家用電器的請求,在服務(wù)器端收到請求后就會(huì )去執行;同理,按下A/D 按鈕,就可以發(fā)送一個(gè)讀取A/D 的請求,在收到服務(wù)器端采集的A/D 數值后,客戶(hù)端就會(huì )在屏幕上顯示;溫度的測量則是每隔兩秒就會(huì )發(fā)送一個(gè)請求,讀取當前的溫度,顯示在屏幕上,并且判斷是否要打開(kāi)空調,并從服務(wù)器端讀取其狀態(tài)信息,更新空調的開(kāi)關(guān)狀態(tài)欄,顯示在文本框中;當服務(wù)器端安防系統檢測到有人入侵時(shí),就會(huì )向客戶(hù)端發(fā)送報警信號,客戶(hù)端需要相應修改當前的安防系統狀態(tài)為報警。

  首先使用Qt 的工具Qt Designer 設計界面。然后進(jìn)入具體的客戶(hù)端編程階段,構造一個(gè)窗體類(lèi)為T(mén)cpClient 類(lèi),具體的軟件編寫(xiě)如下:

  TcpClient::TcpClient(QWidget *parent)
  : QWidget(parent)
  {
  ui.setupUi(this);
  adsocket= new QTcpSocket(this); //用以傳輸A/D數據的TCP通道
  tempsocket= new QTcpSocket(this); //用以傳輸溫度數據的TCP通道
  applincesocket= new QTcpSocket(this); //用以控制家用電器的TCP通道
  securitysocket = new QTcpSocket(this); //用以安防系統報警的TCP通道
  QTimer *temptimer = new QTimer(this); //2S的定時(shí)器
  connect(temptimer,SIGNAL(timeout()),this,SLOT(temp_update()));
  temptimer->start(2000);
  connect( adsocket,SIGNAL( connected() ),this, SLOT( ad_request() ) );
  connect( adsocket,SIGNAL( readyRead() ), this, SLOT( ad_readresult() ) );
  connect( tempsocket,SIGNAL( connected() ),this,SLOT( lm_request() ) );
  connect( tempsocket,SIGNAL( readyRead() ),this,SLOT( lm_readresult() ) );
  connect(appliancesocket,SIGNAL( connected() ), this,SLOT( appliance_request() ) );
  connect(securitysocket,SIGNAL( readyRead() ),this,SLOT( security_readresult() ) );
  }

  動(dòng)態(tài)分配四個(gè)QTcpSocket(Qt 內部對于TCP 協(xié)議的封裝類(lèi))對象,分別用該類(lèi)的對象指針adsocket、tempsocket、appliancesocket、securitysocket 來(lái)指向這四個(gè)對象。然后定義一個(gè)QTimer對象,用來(lái)實(shí)現2 秒的定時(shí)。接著(zhù)對一些信號和槽進(jìn)行連接,從而完成各個(gè)組件之間的通訊,其中: QTimer 對象的timeout 信號和temp_update()槽連接、adsocket 對象的connected 信號和ad_request()連接,adsocket 對象的readyRead 信號和ad_readresult()槽。同理連接其他的幾個(gè)QTckSocket 對象的信號和槽。

  以下,具體描述如何實(shí)現溫度檢測和空調自動(dòng)控制的功能(其他功能的實(shí)現類(lèi)似,就不贅述):(1)定時(shí)器每隔2S 觸發(fā)一次,客戶(hù)端使用tempsocket 連接服務(wù)器端后發(fā)送測溫請求。(2)接收到服務(wù)器的溫度數據后在界面上顯示,并且根據要求決定是否需要啟動(dòng)空調。(3)利用appliancesocket 發(fā)送開(kāi)啟或者關(guān)閉空調的命令。并根據服務(wù)器端的執行結果修改空調開(kāi)關(guān)狀態(tài)欄顯示。

五、結論

  在實(shí)際的測試中,服務(wù)器端運行在實(shí)驗室,連接有日光燈、電飯煲和空調。客戶(hù)端運行在寢室中。本應用在實(shí)現所有功能的基礎上,電力線(xiàn)終端作為服務(wù)器連續開(kāi)機一周,并進(jìn)行高流量的負荷測試,能夠穩定運行,所有功能均表現正常,沒(méi)有發(fā)生故障。從而驗證了本終端的穩定性和該智能家居應用的可行性。
共 2 頁(yè):1 2 

維庫開(kāi)發(fā)網(wǎng)



相關(guān)閱讀:
國內三大運營(yíng)商的“Pad”觀(guān) 2010-10-25
RIM中國區謝國睿:移動(dòng)互聯(lián)網(wǎng)戰略從關(guān)注效率開(kāi)始 2010-10-14
中國新聞周刊文章:黑莓要變“灰莓”了嗎? 2010-09-10
分析Android平臺的技術(shù)動(dòng)力和商業(yè)價(jià)值 2010-08-27
呼叫中心的手機終端應用淺析 2010-08-06

分類(lèi)信息:  電信_與_多媒體通信終端技術(shù)

亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 咸宁市| 岢岚县| 中超| 济宁市| 安新县| 勃利县| 沿河| 顺昌县| 枣庄市| 固镇县| 东至县| 离岛区| 永顺县| 凌海市| 沁阳市| 法库县| 桂阳县| 普安县| 武乡县| 延津县| 丰顺县| 岳普湖县| 井陉县| 建阳市| 高要市| 凤庆县| 景宁| 饶阳县| 仙居县| 九寨沟县| 弥勒县| 自治县| 曲周县| 塔城市| 华安县| 虹口区| 石楼县| 洛扎县| 永福县| 枣强县| 思南县| http://444 http://444 http://444 http://444 http://444 http://444