資源描述:
《基于linux-qt的智能家居系統(tǒng)設計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、基于Linux/Qt的智能家居系統(tǒng)設計.freelCortexA8系列的i.MX51處理器作為MCU,在其上移植嵌入式Linux作為軟件開發(fā)平臺,并利用Qt相關技術為基礎設計友好的用戶界面,實現(xiàn)了arm板的各功能模塊與服務器端的交互。系統(tǒng)同時具備數(shù)字可視對講、信息收發(fā)、家電控制、安防報警、家庭娛樂等功能。1系統(tǒng)的架構和功能家庭智能控制系統(tǒng)主要由室內(nèi)分機、單元門口機、小區(qū)圍墻機、管理中心終端機、管理中心服務器以及附件組成。系統(tǒng)采用分布式網(wǎng)絡結構,可以根據(jù)住戶數(shù)量對系統(tǒng)的容量進行擴充。(1)室內(nèi)機是用戶在室內(nèi)進行操作的主要平臺,其功能組成為:可視對講、信息服務、家電控
2、制、安防報警、家庭娛樂等??梢晫χv模塊主要實現(xiàn)雙向可視通話、視頻監(jiān)控、留言/留影、開鎖等功能;信息服務模塊主要用來收發(fā)物業(yè)信息和小區(qū)廣播,支持文本、圖片形式,并實現(xiàn)與可視對講模塊的影音共享;家電控制模塊包括對燈光、窗簾、空調(diào)、電梯等設施的無線控制,并預設了情境模式;安防報警模塊支持對煙感、門磁、煤氣泄漏檢測等的自動報警,并可通過GPRS/3G技術將報警信息傳送到用戶手機上;家庭娛樂模塊支持常見格式的音視頻文件的播放(主要依靠硬件解碼)以及對常見格式的圖片的瀏覽(電子相框)。(2)單元門口機的主要功能是完成與所在單元樓的任意住戶以及管理中心機的可視通話,除了具備留言
3、/留影功能外,還提供觸摸屏校準、背光調(diào)節(jié)、密碼設置等功能。(3)圍墻機的基本功能和單元門口機類似,.freelember)其中,sender和receiver是指向QObject的指針,signal和slot是不帶有參數(shù)的函數(shù)名。2.2基于XML格式的Socket多線程通信Linux中的網(wǎng)絡編程主要通過Socket接口實現(xiàn),在Qt環(huán)境里,對Socket進行了封裝,并建立了相應的QTcpSocket類來實現(xiàn)TCP客戶端和服務器的通信。QTcpSocket繼承了QIODevice,所以QTcpSocket可以使用QDataStream進行數(shù)據(jù)的讀取和寫入??蓴U展標記語
4、言XML(eXtensibleMarkupLanguage)是一種用于數(shù)據(jù)交換和數(shù)據(jù)存儲的多用途文本格式。對于XML格式的數(shù)據(jù),Qt中的QtXml模塊提供了DOM和SAX兩種處理方式。本文采用的DOM方式把XML文檔轉換成一個可以遍歷的樹形結構,這樣便可以隨意訪問其中的節(jié)點,因此要明顯簡潔得多。室內(nèi)機和中心機之間的通信采用多線程方式實現(xiàn)。多線程方式具有降低內(nèi)存、提高程序響應速度等優(yōu)點,特別適用于嵌入系統(tǒng)。系統(tǒng)中建立了三個主線程:(1)GUI線程:用于執(zhí)行main()主函數(shù),響應用戶的界面操作;(2)tcpServer偵聽線程:用于對指定端口進行監(jiān)聽;(3)tcpS
5、ocket傳輸線程:負責消息的接收和回復。下面以用戶主動更新小區(qū)廣播為例詳細說明Socket通信的流程:(1)室內(nèi)機首先啟動一個線程,將用戶的更新請求結構轉化成標準的XML格式(如果是新設備第一次開機,要先手動進行IP的設置),(2)調(diào)用connectToHost()函數(shù)請求與中心機建立連接,處于監(jiān)聽狀態(tài)的中心機接到請求后,就會分配一個Socket套接字來處理連接:首先根據(jù)解析出來的XML的Type節(jié)點判斷請求類型,如果是純文本則從數(shù)據(jù)庫的Text表讀取,如果是圖片則從硬盤讀取,然后調(diào)用QIODevice::_query,以便于各個實體類與數(shù)據(jù)庫類進行連接。這樣,
6、每當有數(shù)據(jù)庫操作請求時便會實例化一個m_query來創(chuàng)建一個線程用于處理該請求。m_query對象中包含兩個類:(1)QueryThread,用于為每個數(shù)據(jù)操作創(chuàng)建一個線程;(2)X51處理器包含了支持硬件視頻編解碼的VPU單元,并自帶了完整的多媒體解決方案。因此,系統(tǒng)中采用其自帶的多媒體軟件包進行音視頻流的采集和編解碼2??紤]到小區(qū)內(nèi)可視通話時因并發(fā)數(shù)過大而可能導致的網(wǎng)絡擁塞情況,系統(tǒng)還需要提供一定的QoS機制來保證在網(wǎng)絡帶寬較低時也能達到音視頻的同步傳輸。本文采用基于時間戳的實時同步傳輸技術,通過設置可變大小的緩沖區(qū)機制,根據(jù)小區(qū)網(wǎng)絡情況自動調(diào)節(jié)傳輸參數(shù),以音
7、頻質(zhì)量優(yōu)先保證為原則,根據(jù)時間戳實時調(diào)節(jié)視頻數(shù)據(jù)的播放。具體實現(xiàn)過程如下3:(1)發(fā)送端采用兩個獨立的進程分別對音視頻信息進行采樣和打包,然后放到各自的緩沖隊列中等待發(fā)送。(2)音視頻數(shù)據(jù)通過同一個通道發(fā)送到網(wǎng)絡(采用信號量機制保證音視頻數(shù)據(jù)對通道的互斥訪問)。(3)由于音視頻兩個數(shù)據(jù)包的長度差別很大,所以將接收端收到的數(shù)據(jù)根據(jù)包的大小進行區(qū)分。(4)音視頻各自拆包組幀。由于人的聽覺對聲音的不連續(xù)比視覺對圖像的不連續(xù)更敏感,所以采用音頻流作為主流,視頻流作為從流??蛻舳私邮盏揭纛l數(shù)據(jù)包后,不必與視頻數(shù)據(jù)包協(xié)調(diào)就可立即播放,而視頻幀到達時則根據(jù)時間戳進行對比,從而進
8、行相應的同