基于樹(shù)莓派的視頻矩陣控制服務(wù)器設(shè)計(jì)
3.1 接收并解析鍵盤(pán)指令
本文引用地址:http://butianyuan.cn/article/201709/364877.htm視頻矩陣控制服務(wù)器能夠支持多個(gè)鍵盤(pán)同時(shí)工作,多個(gè)鍵盤(pán)連到不同串口上,同時(shí)對(duì)視頻矩陣進(jìn)行控制。單個(gè)串口讀取鍵盤(pán)指令的程序流程如圖3所示。
控制服務(wù)器讀取鍵盤(pán)串口指令后,根據(jù)鍵盤(pán)協(xié)議解析每一條指令。鍵盤(pán)常用操作包括切換操作、設(shè)置(攝像頭)預(yù)置位、到達(dá)預(yù)置位、云臺(tái)PTZ控制、up到達(dá)上一攝像頭,down到達(dá)下一攝像頭。
切換指令解析流程如圖4所示,其它指令解析的流程與切換指令類(lèi)似。
3.2 生成并發(fā)送矩陣控制指令
矩陣控制服務(wù)器在接收并解析鍵盤(pán)指令后,會(huì)根據(jù)MAX-1000矩陣協(xié)議把鍵盤(pán)指令轉(zhuǎn)化為矩陣指令,然后存入到相應(yīng)的串口指令隊(duì)列中,再由相應(yīng)的串口線程輪詢(xún)?cè)摯诘闹噶铌?duì)列并給相應(yīng)矩陣發(fā)送指令。
矩陣控制服務(wù)器與視頻矩陣之間通過(guò)RS-232協(xié)議通信,采用的7位數(shù)據(jù)位、1位停止位、奇校驗(yàn),波特率是19200或者9600。MAX-1000矩陣協(xié)議主要包括對(duì)云臺(tái)PTZ控制協(xié)議和對(duì)輸入輸出切換控制協(xié)議。矩陣指令的格式很固定,只需要根據(jù)鍵盤(pán)指令的類(lèi)型修改幾個(gè)固定的參數(shù)即可生成矩陣控制指令。
矩陣控制服務(wù)器為每個(gè)串口上外設(shè)為矩陣的串口啟動(dòng)了獨(dú)立的線程檢測(cè)串口的指令隊(duì)列中是否有指令,有指令就通過(guò)RS-232串口下發(fā)給視頻矩陣。利用隊(duì)列的先入先出特性,能夠保證指令的正確順序。
3.3 系統(tǒng)可靠性設(shè)計(jì)
由于控制服務(wù)器安裝環(huán)境的電磁干擾和輻射干擾比較強(qiáng),需要保證控制服務(wù)器能夠穩(wěn)定可靠地工作。
在硬件電路方面,設(shè)計(jì)了相應(yīng)的保護(hù)裝置,同時(shí)將控制服務(wù)器的硬件設(shè)備安裝在密封的金屬外殼里,以屏蔽電磁干擾。
在軟件方面,采用看門(mén)狗技術(shù)來(lái)實(shí)現(xiàn)控制服務(wù)器在斷電等極端條件下自動(dòng)恢復(fù)的功能,保證系統(tǒng)長(zhǎng)時(shí)間不間斷運(yùn)行的穩(wěn)定性。控制器樹(shù)莓派的CPU帶有硬件看門(mén)狗,由內(nèi)核發(fā)送喂狗指令管理看門(mén)狗,只有在內(nèi)核異常時(shí)看門(mén)狗才會(huì)起到重啟系統(tǒng)的作用。而在實(shí)際的應(yīng)用情況下,系統(tǒng)工作異常很少由內(nèi)核異常導(dǎo)致,因此,本文在應(yīng)用程序里實(shí)現(xiàn)對(duì)看門(mén)狗的管理。在Linux系統(tǒng)下,通過(guò)操作/dev/watchdog來(lái)管理內(nèi)核自帶的看門(mén)狗功能。在應(yīng)用程序打開(kāi)/dev/watchdog設(shè)備后,即通知內(nèi)核看門(mén)狗開(kāi)始工作,內(nèi)核自動(dòng)啟動(dòng)看門(mén)狗計(jì)時(shí)器,如果沒(méi)有按時(shí)對(duì)/dev/watchdog設(shè)備進(jìn)行寫(xiě)操作,即沒(méi)有喂狗,內(nèi)核就會(huì)重啟系統(tǒng)。
4 WEB控制設(shè)計(jì)
目前主流的WEB服務(wù)技術(shù)主要有Java WEB、PHP、ASP.NET和基于Python的WEB服務(wù)。其中ASP.NET、Java WEB和PHP對(duì)服務(wù)器的硬件要求較高,而基于Python的WEB服務(wù)則更為小巧輕便,開(kāi)發(fā)也更加方便,因此采用基于Python的WEB服務(wù)技術(shù)。
WEB服務(wù)器包括三個(gè)部分:前端WEB頁(yè)面、通信協(xié)議和后端WEB服務(wù)器。WEB服務(wù)構(gòu)架如圖5所示。
瀏覽器訪問(wèn)網(wǎng)頁(yè)時(shí),網(wǎng)頁(yè)上的腳本獲取操作,并通過(guò)HTTP[6]協(xié)議將操作數(shù)據(jù)發(fā)送到服務(wù)器,服務(wù)器處理操作數(shù)據(jù)并控制視頻矩陣,同時(shí)向?yàn)g覽器返回處理結(jié)果,頁(yè)面將展示處理結(jié)果。
4.1 前端頁(yè)面設(shè)計(jì)
WEB頁(yè)面的開(kāi)發(fā)采用的是HTML超文本標(biāo)記語(yǔ)言和JQuery腳本語(yǔ)言。HTML 是為“網(wǎng)頁(yè)創(chuàng)建和其它可在網(wǎng)頁(yè)瀏覽器中看到的信息”設(shè)計(jì)的一種標(biāo)記語(yǔ)言。JQuery是一個(gè)快速、簡(jiǎn)潔、優(yōu)秀的 JavaScript 代碼庫(kù)。
WEB頁(yè)面能夠進(jìn)行視頻矩陣的相關(guān)參數(shù)配置和矩陣切換與云平臺(tái)PTZ控制,其主要功能有:用戶(hù)管理、系統(tǒng)IP配置、矩陣配置、控制設(shè)備配置、攝像頭配置、輪詢(xún)方案配置、切換方案配置、切換方案配置、實(shí)時(shí)切換與PTZ控制。
4. 2 數(shù)據(jù)交互與數(shù)據(jù)響應(yīng)格式設(shè)計(jì)
WEB服務(wù)器的前后臺(tái)數(shù)據(jù)交互技術(shù)采用Ajax技術(shù),以實(shí)現(xiàn)在不重新加載頁(yè)面的情況下更新網(wǎng)頁(yè)。Ajax的工作原理:首先創(chuàng)建XmlHttpRequest對(duì)象,該對(duì)象可以完成服務(wù)器端和后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)交換,然后利用JQuery完成WEB頁(yè)面的更新,即在客戶(hù)端和服務(wù)器端增加一層后臺(tái)數(shù)據(jù)交互,也就是Ajax引擎[7]。
目前,前端與后臺(tái)服務(wù)器的數(shù)據(jù)響應(yīng)主要是文本串和XML兩種。XML格式比較冗余,會(huì)增加用戶(hù)的訪問(wèn)流量,降低訪問(wèn)速度,所以采用文本串的形式。目前在WEB應(yīng)用最為廣泛文本形式的是JSON,JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式[8]。JSON以嚴(yán)格的“鍵/值”的形式來(lái)傳輸數(shù)據(jù)對(duì)象,可在不同的編程語(yǔ)言中應(yīng)用。
4.3 服務(wù)器設(shè)計(jì)
后臺(tái)服務(wù)器采用Tornado框架開(kāi)發(fā),數(shù)據(jù)庫(kù)選擇MySQL數(shù)據(jù)庫(kù)。Tornado框架采用Epoll來(lái)實(shí)現(xiàn)處理大量并發(fā)的連接,具有響應(yīng)速度快、并發(fā)連接處理能力強(qiáng)等特點(diǎn),特別適用于實(shí)時(shí)的WEB服務(wù)[9]。
控制服務(wù)器收到前端請(qǐng)求,tornado會(huì)攔截請(qǐng)求,并根據(jù)請(qǐng)求的url把請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的處理類(lèi)去處理用戶(hù)請(qǐng)求并返回處理后的數(shù)據(jù)。
5 結(jié)論
本文設(shè)計(jì)的視頻矩陣控制服務(wù)器是控制外設(shè)和視頻矩陣的控制中心,硬件部分以樹(shù)莓派為核心,采用高速USB轉(zhuǎn)4串口模塊與控制鍵盤(pán)和MAX-1000矩陣通信,實(shí)現(xiàn)了視頻矩陣的傳統(tǒng)鍵盤(pán)控制;軟件部分采用嵌入式Linux系統(tǒng),開(kāi)發(fā)了基于HTTP協(xié)議的WEB控制系統(tǒng),通過(guò)配置控制服務(wù)器相關(guān)信息,實(shí)現(xiàn)了WEB遠(yuǎn)程控制。目前已經(jīng)應(yīng)用在北京東城檢察院,達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。
參考文獻(xiàn):
[1]秦迎春.實(shí)現(xiàn)嵌入式矩陣切換控制系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,4(23):121-122,132.
[2]鄭靈翔.嵌入式Linux系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008,67-83.
[3]何曉龍,李明.完美應(yīng)用Ubuntu[M].北京:電子工業(yè)出版社,2010:12-15.
[4]M Doraipandian, P Neelamegam.Wireless Sensor Network Using ARM Processors: A Review in Hardware Perspective[J].International Journal of Embedded and Real-Time Communication Systems,2013,4(4):48-59.
[5]李雪紅.USB/RS232接口轉(zhuǎn)換器的設(shè)計(jì)[D].長(zhǎng)安大學(xué),2004.
[6]A Rousskov,V Soloviev. A Performance Study of the Squid Proxy on HTTP/1.0[J].World Wide Web-internet & Web Information Systems,2000,2(1-2):47-67.
[7]譚日森.Ajax技術(shù)的特點(diǎn)及發(fā)展前景[J].黑龍江科技信息,2007(21):87-87.
[8]B Smith. Beginning JSON [EB/OL]. http://dx.doi.org/10.1007/978-1-4842-0202-9_4,2015.
[9]Tornado. Tornado WEB Server [EB/OL]. http://www.tornadoWEB.org/en/stable/, 2009.
本文來(lái)源于《電子產(chǎn)品世界》2017年第10期第55頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評(píng)論