亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux和Qt的智能家居系統(tǒng)的設(shè)計與實現(xiàn)

        2012-07-03 03:36:48劉治國陳新華
        電子技術(shù)應(yīng)用 2012年4期
        關(guān)鍵詞:編解碼音視頻線程

        劉治國,陳新華

        (山東科技大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島266590)

        針對智能家居的特點及應(yīng)用背景,設(shè)計了一種家庭多功能控制系統(tǒng)。該系統(tǒng)采用飛思卡爾公司ARM Cortex A8系列的i.MX51處理器作為MCU,在其上移植嵌入式Linux作為軟件開發(fā)平臺,并利用Qt相關(guān)技術(shù)為基礎(chǔ)設(shè)計友好的用戶界面,實現(xiàn)了ARM板的各功能模塊與服務(wù)器端的交互。系統(tǒng)同時具備數(shù)字可視對講、信息收發(fā)、家電控制、安防報警、家庭娛樂等功能。

        1 系統(tǒng)的架構(gòu)和功能

        家庭智能控制系統(tǒng)主要由室內(nèi)分機、單元門口機、小區(qū)圍墻機、管理中心終端機、管理中心服務(wù)器以及附件組成。系統(tǒng)采用分布式網(wǎng)絡(luò)結(jié)構(gòu),可以根據(jù)住戶數(shù)量對系統(tǒng)的容量進行擴充。

        (1)室內(nèi)機是用戶在室內(nèi)進行操作的主要平臺,其功能組成為:可視對講、信息服務(wù)、家電控制、安防報警、家庭娛樂等??梢晫χv模塊主要實現(xiàn)雙向可視通話、視頻監(jiān)控、留言/留影、開鎖等功能;信息服務(wù)模塊主要用來收發(fā)物業(yè)信息和小區(qū)廣播,支持文本、圖片形式,并實現(xiàn)與可視對講模塊的影音共享;家電控制模塊包括對燈光、窗簾、空調(diào)、電梯等設(shè)施的無線控制,并預(yù)設(shè)了情境模式;安防報警模塊支持對煙感、門磁、煤氣泄漏檢測等的自動報警,并可通過GPRS/3G技術(shù)將報警信息傳送到用戶手機上;家庭娛樂模塊支持常見格式的音視頻文件的播放(主要依靠硬件解碼)以及對常見格式的圖片的瀏覽(電子相框)。

        (2)單元門口機的主要功能是完成與所在單元樓的任意住戶以及管理中心機的可視通話,除了具備留言/留影功能外,還提供觸摸屏校準、背光調(diào)節(jié)、密碼設(shè)置等功能。

        (3)圍墻機的基本功能和單元門口機類似,但可視對講、留言/留影功能是針對小區(qū)內(nèi)所有住戶的。

        (4)中心機是整個系統(tǒng)的神經(jīng)中樞,管理人員通過管理中心的控制設(shè)備管理各子系統(tǒng)的終端,其功能包括:可視對講、視頻監(jiān)控、查看報警信息、排除設(shè)備故障、信息服務(wù)、系統(tǒng)設(shè)置、遠程管理等。

        2 系統(tǒng)的實現(xiàn)方案

        2.1 Qt的信號/槽機制

        Qt是一個跨平臺的C++應(yīng)用程序框架,完全面向?qū)ο?、易于擴展且允許真正的組件編程。Qt的C++類庫封裝了適應(yīng)不同操作系統(tǒng)的訪問細節(jié),這使得它能夠快速地部署于各種桌面與嵌入式系統(tǒng)中[1]。

        信號/槽機制是 Qt的核心特性,這種機制真正實現(xiàn)了消息的封裝,完全可以取代原始的回調(diào)和消息機制。信號和槽的連接通過connect()函數(shù)完成,connect()函數(shù)是 QObject類中的靜態(tài)函數(shù),其函數(shù)原型如下:

        Bool QObject::connect(const QObject*sender,const char*signal,const QObject*receiver,const char*member)

        其中,sender和receiver是指向QObject的指針,signal和slot是不帶有參數(shù)的函數(shù)名。

        2.2 基于XML格式的Socket多線程通信

        Linux中的網(wǎng)絡(luò)編程主要通過Socket接口實現(xiàn),在 Qt環(huán)境里,對 Socket進行了封裝,并建立了相應(yīng)的QTcpSocket類來實現(xiàn)TCP客戶端和服務(wù)器的通信。QTcpSocket繼承了QIODevice,所以QTcpSocket可以使用 QDataStream進行數(shù)據(jù)的讀取和寫入。

        可擴展標記語言XML(eXtensible Markup Language)是一種用于數(shù)據(jù)交換和數(shù)據(jù)存儲的多用途文本格式。對于XML格式的數(shù)據(jù),Qt中的QtXml模塊提供了DOM和SAX兩種處理方式。本文采用的DOM方式把XML文檔轉(zhuǎn)換成一個可以遍歷的樹形結(jié)構(gòu),這樣便可以隨意訪問其中的節(jié)點,因此要明顯簡潔得多。

        室內(nèi)機和中心機之間的通信采用多線程方式實現(xiàn)。多線程方式具有降低內(nèi)存、提高程序響應(yīng)速度等優(yōu)點,特別適用于嵌入系統(tǒng)。系統(tǒng)中建立了三個主線程:(1)GUI線程:用于執(zhí)行 main()主函數(shù),響應(yīng)用戶的界面操作;(2)tcpServer偵聽線程:用于對指定端口進行監(jiān)聽;(3)tcpSocket傳輸線程:負責(zé)消息的接收和回復(fù)。下面以用戶主動更新小區(qū)廣播為例詳細說明Socket通信的流程:(1)室內(nèi)機首先啟動一個線程,將用戶的更新請求結(jié)構(gòu)轉(zhuǎn)化成標準的XML格式(如果是新設(shè)備第一次開機,要先手動進行 IP的設(shè)置),(2)調(diào)用 connectToHost()函數(shù)請求與中心機建立連接,處于監(jiān)聽狀態(tài)的中心機接到請求后,就會分配一個Socket套接字來處理連接:首先根據(jù)解析出來的XML的Type節(jié)點判斷請求類型,如果是純文本則從數(shù)據(jù)庫的Text表讀取,如果是圖片則從硬盤讀取,然后調(diào)用 QIODevice::write()函數(shù)發(fā)送;(3)室內(nèi)機接到應(yīng)答信號readyRead()后就開始進行信息的收取,根據(jù)消息的Type節(jié)點類型分別寫入數(shù)據(jù)庫和硬盤。Socket多線程通信流程如圖1所示。

        2.3 并行數(shù)據(jù)庫設(shè)計

        為了實現(xiàn)數(shù)據(jù)庫的并行操作,使GUI界面與數(shù)據(jù)庫相分離,從而讓界面能更快地響應(yīng)用戶的一般操作,同樣要用到Qt的多線程編程。在系統(tǒng)啟動時,首先要建立一個全局對象m_query,以便于各個實體類與數(shù)據(jù)庫類進行連接。這樣,每當有數(shù)據(jù)庫操作請求時便會實例化一個m_query來創(chuàng)建一個線程用于處理該請求。m_query對象中包含兩個類:(1)QueryThread,用于為每個數(shù)據(jù)操作創(chuàng)建一個線程;(2)Worker,用于實現(xiàn)數(shù)據(jù)庫的相關(guān)操作,如加載數(shù)據(jù)庫驅(qū)動、進行數(shù)據(jù)查詢/插入/刪除等。

        圖2為數(shù)據(jù)庫的查詢操作流程。首先在實體類里創(chuàng)建兩個connect連接,分別用于發(fā)送和接收查詢結(jié)果,并生成SQL語句向QueryThread提交查詢請求信號。QueryThread收到請求后為其創(chuàng)建一個線程,并交由Worker類進行具體數(shù)據(jù)庫查詢操作。Worker類得出查詢結(jié)果后,先傳遞給QueryThread,再由其將查詢結(jié)果返回到實體類。

        圖2 數(shù)據(jù)庫查詢操作流程圖

        關(guān)鍵代碼如下:

        connect(this,SIGNAL(seek(const QString&)),m_query,SIGNAL(seek_execute(const QString&)));

        connect(m_query,SIGNAL(seek(const QList<QSqlRecord>&)),this,SLOT(slotResult(const QList<QSqlRecord>&)));

        void text::database(){

        QString sql="select*from Text order by date desc";

        emit seek_execute(sql);

        }

        2.4 音視頻同步傳輸技術(shù)

        i.MX51處理器包含了支持硬件視頻編解碼的VPU單元,并自帶了完整的多媒體解決方案。因此,系統(tǒng)中采用其自帶的多媒體軟件包進行音視頻流的采集和編解碼[2]。

        考慮到小區(qū)內(nèi)可視通話時因并發(fā)數(shù)過大而可能導(dǎo)致的網(wǎng)絡(luò)擁塞情況,系統(tǒng)還需要提供一定的QoS機制來保證在網(wǎng)絡(luò)帶寬較低時也能達到音視頻的同步傳輸。本文采用基于時間戳的實時同步傳輸技術(shù),通過設(shè)置可變大小的緩沖區(qū)機制,根據(jù)小區(qū)網(wǎng)絡(luò)情況自動調(diào)節(jié)傳輸參數(shù),以音頻質(zhì)量優(yōu)先保證為原則,根據(jù)時間戳實時調(diào)節(jié)視頻數(shù)據(jù)的播放。具體實現(xiàn)過程如下[3]:

        (1)發(fā)送端采用兩個獨立的進程分別對音視頻信息進行采樣和打包,然后放到各自的緩沖隊列中等待發(fā)送。

        (2)音視頻數(shù)據(jù)通過同一個通道發(fā)送到網(wǎng)絡(luò)(采用信號量機制保證音視頻數(shù)據(jù)對通道的互斥訪問)。

        (3)由于音視頻兩個數(shù)據(jù)包的長度差別很大,所以將接收端收到的數(shù)據(jù)根據(jù)包的大小進行區(qū)分。

        (4)音視頻各自拆包組幀。由于人的聽覺對聲音的不連續(xù)比視覺對圖像的不連續(xù)更敏感,所以采用音頻流作為主流,視頻流作為從流??蛻舳私邮盏揭纛l數(shù)據(jù)包后,不必與視頻數(shù)據(jù)包協(xié)調(diào)就可立即播放,而視頻幀到達時則根據(jù)時間戳進行對比,從而進行相應(yīng)的同步處理。

        (5)為保證音視頻的實時同步,采用多線程分別對音頻和視頻進行播放。

        3 i.MX51平臺移植

        3.1 搭建LTIB開發(fā)環(huán)境

        LTIB(Linux Target Image Builder)是飛思卡爾公司開發(fā)的一個用于部署B(yǎng)SP的工具,含有U-Boot等引導(dǎo)加載程序,支持Bootloader和內(nèi)核映像的構(gòu)建。利用該工具,可以定制出符合GNU/Linux標準的跨平臺的根文件系統(tǒng)。本設(shè)計選擇使用飛思卡爾公司提供的L2.6.31_10.07.11_ER_source.tar.gz集成源碼包,在一臺安裝了Ubuntu 10.04操作系統(tǒng)的PC機上配置安裝LTIB[4]。其過程如下:

        (1)解壓縮源碼包,執(zhí)行./install進入安裝LTIB的命令提示。

        (2)執(zhí)行./ltib進入LTIB的配置界面。

        (3)在 LTIB配置 Platform時選擇i.MX51平臺。

        (4)配置 Kernel時選擇 CLAA WVGA Panel(LCD 觸摸屏驅(qū)動)和 SoC Audio support for IMX-SGTL5000(聲卡驅(qū)動),其他保持默認。

        (5)將交叉編譯工具 arm-none-linux-gnueabi-gcc加入PATH環(huán)境變量,在ltib根目錄執(zhí)行下述命令,交叉編譯 Qt庫:

        ./ltib-m prep-p qt-embedded.spec

        ./ltib-m scbuild-p qt-embedded.spec

        (6)執(zhí)行 make install,在 ltib下的 rootfs目錄就會生成相應(yīng)的U-Boot、內(nèi)核和文件系統(tǒng),將將其復(fù)制到目標板的TF卡上。

        3.2 架設(shè)NFS文件系統(tǒng)

        為了簡化調(diào)試過程和縮短開發(fā)周期,在Linux主機上建立了NFS網(wǎng)絡(luò)文件系統(tǒng),這樣就實現(xiàn)了宿主機與目標板的文件共享。開發(fā)過程簡化為:Linux主機編譯生成目標平臺的可執(zhí)行文件→復(fù)制文件到NFS共享目錄→目標板運行程序,從而省去了重復(fù)制作鏡像、下載鏡像、重啟開發(fā)板等步驟,節(jié)省了大量的開發(fā)時間。目標板的NFS啟動信息如圖3所示。

        4 系統(tǒng)測試及結(jié)果

        4.1 并發(fā)測試

        并發(fā)測試主要用來測試多個用戶同時訪問同一個應(yīng)用程序、同一個數(shù)據(jù)記錄時是否存在死鎖或其他問題。由于本系統(tǒng)是面向一個小區(qū)的住戶,因此系統(tǒng)的并發(fā)測試尤為重要。

        數(shù)據(jù)庫并發(fā)測試:室內(nèi)機開啟多個線程同時訪問中心機服務(wù)器,界面并不會因大量的數(shù)據(jù)操作而出現(xiàn)“凍結(jié)”現(xiàn)象,CPU占用穩(wěn)定,數(shù)據(jù)庫返回結(jié)果顯示正常。

        信息發(fā)布測試:中心機開啟多個線程同時發(fā)送廣播信息,各室內(nèi)機接收正常,不會出現(xiàn)顯示錯誤或“丟包”現(xiàn)象。

        4.2 跨網(wǎng)段測試

        考慮到小區(qū)用戶一般在幾百甚至上千,一個網(wǎng)段的IP地址不能滿足需求。為了檢測在不同網(wǎng)段下通信模塊能否正常工作,使用一臺華為S5300交換機(switch)和兩臺華為5200交換機搭建了一個小型的網(wǎng)絡(luò)環(huán)境進行相關(guān)測試。如圖4所示,測試采用IPv4靜態(tài)路由,使不同網(wǎng)段的任意兩臺室內(nèi)機之間能夠互通。測試表明,分屬不同網(wǎng)段的室內(nèi)機之間,可視通話、信息互發(fā)等模塊均正常工作,從而驗證了本設(shè)計方案的可行性。

        4.3 可視對講性能測試

        可視對講性能測試主要是檢測室內(nèi)機終端中音視頻的采集、編解碼、收發(fā)和顯示。對于音視頻的采集、收發(fā)和顯示,可通過揚聲器和LCD顯示直觀地檢測。而對編解碼的測試則比較復(fù)雜,本設(shè)計是從最長時間、最短時間和平均時間三個方面來測試編解碼一幀音視頻所需要消耗的時間。i.MX51平臺上音視頻編解碼的性能測試如表1所示。

        由表1可以看出,i.MX51平臺上能夠?qū)崟r地完成音頻和視頻通信,且音頻清晰、視頻流暢、失真度小,達到了可視對講對音視頻編解碼器的實時性要求。

        本文采用Linux和Qt相關(guān)技術(shù),在飛思卡爾公司i.MX51平臺上設(shè)計了一種多功能的智能家居控制系統(tǒng),實現(xiàn)了客戶端與服務(wù)器的Socke通信和音視頻同步傳輸?shù)群诵墓δ?。下一步還需要擴展家電控制、安防控制等功能。

        表1 音視頻編解碼性能測試結(jié)果

        [1]楊瀟.基于 Qt的富客戶端軟件設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2009.

        [2]BLANCHETTE J,SUMMERFIELD M.C++GUI programming with Qt4,second edition[M].北京:電子工業(yè)出版社,2008.

        [3]Freescale Cooperation.i.MX51_EVK_Linux_BSP_userguide.2010.

        [4]RICQUEBOURG V,DURAND D,MENGAETAL D.Context inferring in the smart home:an SWRL approach[C].21st International Conference on Advanced Information Networking and Applications Workshops(AINAW'07).IEEE CS Press,2007.

        猜你喜歡
        編解碼音視頻線程
        1553B總線控制器編解碼設(shè)計
        3KB深圳市一禾音視頻科技有限公司
        大型民機試飛遙測視頻編解碼方法研究
        基于H.265編解碼的高清視頻傳輸系統(tǒng)研究
        電子測試(2018年18期)2018-11-14 02:30:54
        WIFI音視頻信號傳輸?shù)年P(guān)鍵問題探究
        電子制作(2018年12期)2018-08-01 00:48:06
        高速公路整合移動音視頻系統(tǒng)應(yīng)用
        淺談linux多線程協(xié)作
        Roland專業(yè)音視頻新技術(shù)研討會在上海召開
        主流視頻編解碼軟件的硬件性能分析與設(shè)計
        計算機工程(2014年6期)2014-02-28 01:27:54
        Linux線程實現(xiàn)技術(shù)研究
        久久中文字幕乱码免费| 日韩经典午夜福利发布| 亚欧免费无码aⅴ在线观看| 国产精品99久久免费| 人人爽亚洲aⅴ人人爽av人人片| 女同在线网站免费观看| 疯狂三人交性欧美| 亚洲熟女综合一区二区三区| 国产高清a| 国产自拍视频一区在线| 久久精品人人做人人爱爱| 亚洲∧v久久久无码精品| 丰满熟妇人妻无码区| 韩国三级黄色一区二区| 中文字幕乱码高清完整版| 日本韩无专砖码高清| 亚洲综合久久一本久道| 91偷拍与自偷拍亚洲精品86| 玩中年熟妇让你爽视频| 精品国产一级毛片大全| 色综久久综合桃花网国产精品| 国产人成无码视频在线1000| 日本少妇又色又紧又爽又刺激| 丁香五月亚洲综合在线| 亚洲日韩精品欧美一区二区一| 91热爆在线精品| 国产视频一区二区三区在线看| 国产激情视频免费在线观看| 亚洲产国偷v产偷v自拍色戒| 日本精品一区二区三本中文| 午夜桃色视频在线观看| 久久99国产综合精品| 奇米影视久久777中文字幕| 日本一区二区三区在线观看免费 | 精品国产亚洲一区二区三区四区| 色欲一区二区三区精品a片| 久久中文字幕无码专区| 成人午夜免费福利| 日韩精品一二三区乱码| 麻豆影视视频高清在线观看| 久久狠狠高潮亚洲精品暴力打 |