国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux的智能倉(cāng)庫(kù)控制系統(tǒng)的設(shè)計(jì)

2018-05-10 07:14:07楊琳王東東王樹(shù)超
商洛學(xué)院學(xué)報(bào) 2018年2期
關(guān)鍵詞:驅(qū)動(dòng)程序倉(cāng)庫(kù)客戶端

楊琳,王東東,王樹(shù)超

(商洛學(xué)院電子信息與電氣工程學(xué)院,陜西商洛 726000)

隨著物聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,在智慧城市的建設(shè)潮流當(dāng)中,智能倉(cāng)庫(kù)是一項(xiàng)核心技術(shù),受到很多高科技研發(fā)公司的青睞。將物聯(lián)網(wǎng)[1]、Linux[2]、Uinx[3]等新技術(shù)應(yīng)用到倉(cāng)庫(kù)的智能管理中,是大勢(shì)所趨。國(guó)內(nèi)外學(xué)者對(duì)倉(cāng)庫(kù)的管理、調(diào)度、碼垛、查詢等問(wèn)題展開(kāi)大量研究。Tinelli[4]用多準(zhǔn)則工具來(lái)解決倉(cāng)庫(kù)產(chǎn)品位置優(yōu)化問(wèn)題;Herbert[5]研究了節(jié)約成本的倉(cāng)庫(kù)智能存儲(chǔ)方法;曹建剛[6]、張煥國(guó)[7]在嵌入式環(huán)境下建立了的智能倉(cāng)庫(kù)網(wǎng)絡(luò);陳傳軍[8]、楊文強(qiáng)[9]實(shí)現(xiàn)了立體倉(cāng)庫(kù)的調(diào)度算法;童曉渝[10]分析了智能家居的發(fā)展與智能倉(cāng)庫(kù)的聯(lián)系;劉士立[11]、周星君[12]分別在 Linux環(huán)境和Android環(huán)境下完成了智能倉(cāng)庫(kù)的引導(dǎo)系統(tǒng)和設(shè)計(jì);熊宗接[13]設(shè)計(jì)了遠(yuǎn)程糧倉(cāng)控制系統(tǒng);李素敏[14]、王明[15]、王海濤[16]分別研究了智能倉(cāng)庫(kù)、智能監(jiān)控系統(tǒng)、智能倉(cāng)庫(kù)對(duì)象的管理技術(shù);劉瑞龍[17]、周燕[18]分別完成了STC單片機(jī)和STM32環(huán)境下的智能倉(cāng)庫(kù)車(chē)和智能尋物算法的設(shè)計(jì)。在國(guó)內(nèi)外的研究中,各種智能倉(cāng)庫(kù)都有著各自的優(yōu)勢(shì)和不足,但是也存在著技術(shù)規(guī)范不統(tǒng)一,功能不齊全,系統(tǒng)不簡(jiǎn)潔的特點(diǎn)。本文針對(duì)目前智能倉(cāng)庫(kù)沒(méi)有統(tǒng)一的技術(shù)規(guī)范,設(shè)計(jì)的智能倉(cāng)庫(kù)存在系統(tǒng)上的不簡(jiǎn)潔,擴(kuò)展性不強(qiáng)的缺陷,設(shè)計(jì)了一個(gè)基于Linux的智能倉(cāng)庫(kù)控制系統(tǒng),構(gòu)建的Linux系統(tǒng)模型,實(shí)現(xiàn)了倉(cāng)庫(kù)的自動(dòng)監(jiān)控、報(bào)警、控溫等功能,解決倉(cāng)庫(kù)貨物存儲(chǔ)過(guò)程中的擁堵問(wèn)題,尤其是改善了時(shí)間與能源浪費(fèi)的問(wèn)題。

1 系統(tǒng)整體結(jié)構(gòu)功能

本系統(tǒng)利用無(wú)線wifi做為局域網(wǎng)絡(luò),將其boa服務(wù)器運(yùn)行在S3C2440核心控制板上,用來(lái)接收和處理WEB網(wǎng)頁(yè)數(shù)據(jù),同時(shí)在S3C2440開(kāi)發(fā)板上也運(yùn)行著視頻流服務(wù)器,用來(lái)處理監(jiān)控視頻數(shù)據(jù),并將視頻監(jiān)控圖像數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳遞給網(wǎng)頁(yè),在S3C2440開(kāi)發(fā)板的周?chē)惨訥PIO的形式,外圍電路用以模擬整個(gè)倉(cāng)庫(kù)電路,其智能倉(cāng)庫(kù)控制系統(tǒng)結(jié)構(gòu)功能框圖如圖1所示。

圖1 智能倉(cāng)庫(kù)控制系統(tǒng)結(jié)構(gòu)功能原理框圖

2 系統(tǒng)硬件設(shè)計(jì)

2.1 核心器件選型

2.1.1 主控芯片

本系統(tǒng)選擇S3C2440A作為核心控制芯片,這種芯片通常用于嵌入式應(yīng)用的集成系統(tǒng)中;采用 16/32-位RISC(精簡(jiǎn)指令集)架構(gòu)和以ARM920TCPU為核心的強(qiáng)大的指令集;擁有增強(qiáng)型ARM架構(gòu)的MMU支持可以支持 WinCE,EPOC32和 Linux等操作系統(tǒng)。

2.1.2 人體感應(yīng)模塊

本系統(tǒng)的人體感應(yīng)模塊選用HC-SR501人體感應(yīng)模塊,這是一種熱釋電紅外的傳感器模塊,能檢測(cè)人或動(dòng)物發(fā)射的紅外線而輸出電信號(hào),倉(cāng)庫(kù)中有人和無(wú)人的兩種狀態(tài)會(huì)被這種模塊檢測(cè)出來(lái)。

2.1.3 步進(jìn)電機(jī)模塊

步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的元步進(jìn)電機(jī)組件,本系統(tǒng)中步進(jìn)電機(jī)主要用于的門(mén),窗控制。本系統(tǒng)選擇的步進(jìn)電機(jī)驅(qū)動(dòng)芯片是ULN2003。

2.2 硬件電路

硬件系統(tǒng)的設(shè)計(jì),以高內(nèi)聚為出發(fā)點(diǎn),采用S3C2440ARM芯片來(lái)作為控制核心,利用USB攝像頭來(lái)采集視頻數(shù)據(jù),同時(shí)利用LCD液晶屏來(lái)顯示圖形數(shù)據(jù),通過(guò)控制GPIO引腳來(lái)控制報(bào)警器,倉(cāng)庫(kù)燈光,人體紅外傳感器等外圍硬件模塊,其硬件模塊組成如圖2所示,其中箭頭方向是指控制信號(hào)的流向。

圖2 硬件模塊組成

2.2.1 步進(jìn)電機(jī)控制電路圖

如圖3所示,J11排座直接與電平轉(zhuǎn)換芯片的輸出端口相連,P8排座直接和進(jìn)電機(jī)相連,只需要通過(guò)控制編寫(xiě)程序控制1~5口的TTL電平,就可以直接控制步進(jìn)電機(jī)的轉(zhuǎn)速和旋轉(zhuǎn)角度。

圖3 步進(jìn)電機(jī)控制電路圖

2.2.2 LCD控制器外圍電路

LCD控制器外圍電路如圖4所示,其中VD[23:0]為像素?cái)?shù)據(jù)線,用來(lái)傳遞圖像數(shù)據(jù);VFRAME用來(lái)發(fā)出一幀圖像數(shù)據(jù)的開(kāi)始信號(hào);VLINE引腳用來(lái)控制一行圖像數(shù)據(jù)的開(kāi)始;VCLK用來(lái)控制打點(diǎn)時(shí)鐘頻率;LED+和 LED-用來(lái)控制 LCD液晶頻的背光。

圖4 LCD控制器外圍電路

3 系統(tǒng)軟件設(shè)計(jì)

作為一個(gè)嵌入式系統(tǒng)的軟件,其中uboot,Linux內(nèi)核,根文件系統(tǒng),底層硬件驅(qū)動(dòng)程序,上層應(yīng)用程序缺一不可。其中uboot在系統(tǒng)一上電就開(kāi)始運(yùn)行,主要負(fù)責(zé)硬件的一些初使化工作,最為主要的工作是啟動(dòng)內(nèi)核,內(nèi)核則負(fù)責(zé)對(duì)設(shè)備,處理器,內(nèi)存,文件,作業(yè)進(jìn)行管理,當(dāng)然在本系統(tǒng)中它主要負(fù)責(zé)為驅(qū)動(dòng)程序提供運(yùn)行環(huán)境,驅(qū)動(dòng)程序向下直接操作硬件,向上給用戶層提供接口,內(nèi)核掛接根文件系統(tǒng),根文件系統(tǒng)之中存放著應(yīng)用程序。對(duì)于本系統(tǒng)而言它主要存放底層驅(qū)動(dòng)對(duì)應(yīng)的應(yīng)用程序,以及boa服務(wù)器和視頻流服務(wù)器。將底層驅(qū)動(dòng)程序,上層應(yīng)用層程序,及BOA服務(wù)器和視頻流服務(wù)器在程序中的實(shí)現(xiàn)方法和原理逐一進(jìn)行分析。

3.1 應(yīng)用層軟件架構(gòu)的設(shè)計(jì)

本系統(tǒng)通過(guò)JZ2440開(kāi)發(fā)板4.3寸液晶屏來(lái)顯示視屏監(jiān)控動(dòng)態(tài)圖像,本軟件的設(shè)計(jì)主要利用了http語(yǔ)言實(shí)現(xiàn)對(duì)客戶端網(wǎng)頁(yè)界面的設(shè)計(jì),同時(shí)也對(duì)boa服務(wù)器進(jìn)行了移植,使得運(yùn)行在根文件系統(tǒng)中的boa服務(wù)器能夠接收客戶端的請(qǐng)求數(shù)據(jù),并根據(jù)其表單數(shù)據(jù)調(diào)用相應(yīng)的cgi程序,cgi程序調(diào)用應(yīng)用程序,應(yīng)用程序利用系統(tǒng)調(diào)用函數(shù)操作設(shè)備節(jié)點(diǎn)觸發(fā)底層驅(qū)動(dòng)程序,從而達(dá)到對(duì)硬件的操作和整個(gè)倉(cāng)庫(kù)設(shè)備的控制。軟件總體框圖如圖5所示。首先會(huì)對(duì)log日志文件進(jìn)行初始化,用來(lái)記錄系統(tǒng)的運(yùn)行狀況,以便在智能倉(cāng)庫(kù)控制系統(tǒng)出現(xiàn)故障時(shí),通過(guò)查閱log日志文件就可以獲知系統(tǒng)出現(xiàn)的故障所在,從而為每個(gè)功能模塊創(chuàng)建獨(dú)立的線程,其創(chuàng)建線程的流程圖如圖6所示。

圖5 系統(tǒng)軟件總體框圖

圖6 創(chuàng)建線程的流程圖

需要為每個(gè)功能模塊創(chuàng)建獨(dú)立的線程,軟件利用了消息隊(duì)列機(jī)制接收來(lái)自cgi程序發(fā)送過(guò)來(lái)的消息,相應(yīng)的功能線程首先判斷是否是它的消息,若是則調(diào)用對(duì)應(yīng)的設(shè)備應(yīng)用程序,對(duì)設(shè)備進(jìn)行硬件操作,接下來(lái)以智能倉(cāng)庫(kù)控制系統(tǒng)中的開(kāi)換氣扇為例介紹整個(gè)智能倉(cāng)庫(kù)控制系統(tǒng)的控制機(jī)制。其開(kāi)風(fēng)扇機(jī)制框架圖如圖7所示。

圖7 開(kāi)風(fēng)扇機(jī)制框架圖

用戶在客戶端利用手機(jī)或PC機(jī)連接到局域網(wǎng)時(shí),通過(guò)點(diǎn)擊開(kāi)風(fēng)扇按鈕,這時(shí)會(huì)通過(guò)TCP/IP網(wǎng)絡(luò)通信協(xié)議將表單數(shù)據(jù)傳遞給核心控制模塊端的BOA服務(wù)器,BOA服務(wù)器會(huì)調(diào)用相關(guān)目錄下的cgi程序,cgi程序會(huì)創(chuàng)建消息隊(duì)列,發(fā)消息給事先創(chuàng)建好的開(kāi)風(fēng)扇對(duì)應(yīng)的線程,該線程接收到與之匹配的消息之后,會(huì)通過(guò)系統(tǒng)掉用庫(kù)函數(shù)來(lái)通知內(nèi)核層所對(duì)應(yīng)的驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序首先將GPIO的輸出引腳設(shè)置成風(fēng)扇對(duì)應(yīng)的引腳,根據(jù)應(yīng)用層傳遞給內(nèi)核層的數(shù)據(jù),來(lái)輸出高低電平,從而達(dá)到對(duì)換氣扇的開(kāi)關(guān)控制。

3.2 BOA服務(wù)器的選擇

Linux操作系統(tǒng)支持 httpd、Thttpd和 BOA三種服務(wù)器,本系統(tǒng)選擇的Boa服務(wù)器是一個(gè)在智能倉(cāng)庫(kù)領(lǐng)域非常受歡迎的Web服務(wù)器,它可以支持認(rèn)證和cgi,而且最終可執(zhí)行代碼相當(dāng)小,只有60 K左右,是其他的Web服務(wù)器無(wú)法相比的。

3.3 換氣風(fēng)扇系統(tǒng)的實(shí)現(xiàn)

3.3.1 開(kāi)換氣扇對(duì)應(yīng)WEB網(wǎng)頁(yè)客戶端界面的實(shí)現(xiàn)

當(dāng)客戶端在WEB網(wǎng)頁(yè)上點(diǎn)擊“打開(kāi)小換氣扇”按鈕,這時(shí)客戶端會(huì)執(zhí)行action動(dòng)作,submit指的是執(zhí)行提交動(dòng)作,表示將"/cgibin/fan/fan_cgi.cgi"這一字符串?dāng)?shù)據(jù)提交給BOA服務(wù)器,BOA服務(wù)器會(huì)解析這個(gè)字符串的數(shù)據(jù),接下來(lái)就會(huì)到根文件系統(tǒng)下的/www/cgi-bin/fan目錄中去執(zhí)行名為fan_cgi.cgi的cgi程序。

3.3.2 開(kāi)風(fēng)扇對(duì)應(yīng)CGI程序的原理及其實(shí)現(xiàn)

用戶(客戶端)通過(guò)WEB網(wǎng)頁(yè)將數(shù)據(jù)傳遞給WEB服務(wù)器,WEB服務(wù)器中運(yùn)行著一個(gè)守護(hù)進(jìn)程,當(dāng)接收到客戶端的一個(gè)請(qǐng)求之后,會(huì)調(diào)用進(jìn)程創(chuàng)建函數(shù)fork,為cgi創(chuàng)建出一個(gè)新的進(jìn)程。該子進(jìn)程將cgi請(qǐng)求的有關(guān)數(shù)據(jù)設(shè)置成環(huán)境變量(該子進(jìn)程將要完成的主要工作是將與請(qǐng)求相關(guān)的數(shù)據(jù)),并啟動(dòng)URL指定的cgi程序(這時(shí)URL會(huì)指定相應(yīng)的cgi程序,并啟動(dòng)它),cgi程序會(huì)從之前指定的環(huán)境變量中讀取所需的數(shù)據(jù),如圖8所示。

圖8 CGI程序工作原理

現(xiàn)就fan_cgi.cgi的源碼程序?yàn)槔治鯿gi程序在該智能倉(cāng)庫(kù)控制系統(tǒng)中的作用,當(dāng)用戶在WEB客戶端點(diǎn)擊“打開(kāi)小換氣扇 ”按鈕時(shí),BOA服務(wù)器就會(huì)調(diào)用該CGI程序,其代碼如下所示:

printf("%s%c%c","Content-Type:text/html;charset=gb2312 ",13,10);

system("/www/cgi-bin/fan/app/fanopentest");

printf ("<META HTTP -EQUIV ="REFRESH"content="0;url=../../main.html">");printf("</HEAD>");

3.3.3 風(fēng)扇及其字符設(shè)備驅(qū)程序的實(shí)現(xiàn)

本研究中選用一個(gè)擴(kuò)展的GPIO口,GPA口作為風(fēng)扇的數(shù)據(jù)線。對(duì)于風(fēng)扇的控制就是設(shè)置GPA口為輸出端口,以及設(shè)置I/O口的模式來(lái)完成的,把風(fēng)扇抽象成了一個(gè)字符設(shè)備,將其風(fēng)扇控制程序?qū)懗梢粋€(gè)字符設(shè)備程序,這樣在用戶空間就可以直接以open,read等系統(tǒng)調(diào)用來(lái)訪問(wèn)底層硬件,達(dá)到對(duì)底層硬件的控制。其風(fēng)扇驅(qū)動(dòng)控制程序如下所示:

即用戶層通過(guò)調(diào)用ioctl函數(shù),系統(tǒng)會(huì)通過(guò)軟中斷的方式陷入內(nèi)核,內(nèi)核會(huì)調(diào)用到內(nèi)核態(tài)的ioctl函數(shù),將用戶態(tài)的指令傳入內(nèi)核態(tài)以此來(lái)控制風(fēng)扇的開(kāi)與關(guān)。編寫(xiě)Makefile,把上述程序編譯為一個(gè)fan.ko模塊。這個(gè)cgi程序,將由BOA服務(wù)器調(diào)用。當(dāng)客戶端點(diǎn)擊開(kāi)風(fēng)扇的按鈕時(shí),會(huì)通過(guò)htttp通信,將表單數(shù)據(jù)傳遞給BOA服務(wù)器,BOA服務(wù)器將根據(jù)表單數(shù)據(jù),調(diào)用fan.cgi,在fan.cgi程序中將調(diào)用相關(guān)目錄下的應(yīng)用程序,達(dá)到客戶遠(yuǎn)程通過(guò)網(wǎng)頁(yè)對(duì)倉(cāng)庫(kù)中風(fēng)扇的控制。

3.4 LCD液晶顯示屏及其設(shè)備驅(qū)動(dòng)

其驅(qū)動(dòng)程序的編寫(xiě)相對(duì)而言比較復(fù)雜,故在此對(duì)其作出相應(yīng)的分析。對(duì)于linux下驅(qū)動(dòng)程序的編寫(xiě)作者對(duì)此作出總結(jié),首先編寫(xiě)驅(qū)動(dòng)時(shí)要明確目的,即驅(qū)動(dòng)程序向下驅(qū)動(dòng)硬件,向上給應(yīng)用層提供標(biāo)準(zhǔn)的接口,屏蔽硬件細(xì)節(jié),使得寫(xiě)應(yīng)用程序的工程師在無(wú)需參考硬件手冊(cè)的情況下,只需利用系統(tǒng)調(diào)用函數(shù)結(jié)合相應(yīng)的業(yè)務(wù)邏輯使其硬件工作起來(lái);同時(shí)硬件驅(qū)動(dòng)程序的編寫(xiě)之前首先需參考Linux內(nèi)核現(xiàn)有的驅(qū)動(dòng)程序,弄清楚其架構(gòu);在該架構(gòu)的基礎(chǔ)之上,參考相應(yīng)的控制器手冊(cè)和硬件外設(shè)手冊(cè)編寫(xiě)驅(qū)動(dòng)程序,使得編寫(xiě)的驅(qū)動(dòng)程序能夠融合到該架構(gòu)之中,所以驅(qū)動(dòng)程序的編寫(xiě)重點(diǎn)是弄清架構(gòu)和看懂芯片數(shù)據(jù)手冊(cè),一般脫離不了的步驟是分配一個(gè)結(jié)構(gòu)體對(duì)象,并對(duì)該結(jié)構(gòu)體進(jìn)行初始化,向內(nèi)核注冊(cè)該結(jié)構(gòu)體,最后依據(jù)芯片手冊(cè)對(duì)硬件進(jìn)行相應(yīng)的操作。

那么針對(duì)LCD驅(qū)動(dòng)程序的編寫(xiě),首先需要弄清LCD的工作原理,該4.3寸液晶屏控制器結(jié)構(gòu)如圖9所示。

LCD驅(qū)動(dòng)程序流程圖如圖10所示。

圖9 S3C2440LCD控制器結(jié)構(gòu)圖

圖10 驅(qū)動(dòng)程序流程圖

即編寫(xiě)LCD驅(qū)動(dòng)程序時(shí)首先需要分配一個(gè)fb_info結(jié)構(gòu)體;然后就是對(duì)該結(jié)構(gòu)體的設(shè)置,設(shè)置包括固定參數(shù)的設(shè)置,可變參數(shù)的設(shè)置,像素元素的設(shè)置,以及操作函數(shù),顯存虛擬地址方面的設(shè)置;對(duì)LCD硬件的操作,首先得配置GPIO用于LCD,根據(jù)LCD手冊(cè)設(shè)置LCD控制器,比如VCLK的頻率等。

3.5 MJPEG-STREAMER的架構(gòu)與原理分析

本系統(tǒng)中采用UVC攝像頭采集圖像數(shù)據(jù),通過(guò)MJPEG-STREAMER視頻流服務(wù)器將視屏數(shù)據(jù)傳遞給網(wǎng)頁(yè)客戶端,達(dá)到視屏監(jiān)控的目的。如圖11所示,MJPEG-STREAMER視頻流服務(wù)器可以看作一個(gè)碼頭,可以將圖像數(shù)據(jù)比作貨物,那么需要一個(gè)倉(cāng)庫(kù)將數(shù)據(jù)保存起來(lái),在視屏流服務(wù)器中的用一個(gè)全局變量來(lái)表示;同時(shí)也涉及到如何從攝像頭中把數(shù)據(jù)取出來(lái),即如何往倉(cāng)庫(kù)中放貨物,在代碼中首先是利用面向?qū)ο蟮乃枷?,將攝像頭的信息用結(jié)構(gòu)體(struct vdin)來(lái)加以描述,例如,對(duì)所采集圖片寬高,以及圖片所對(duì)應(yīng)的格式進(jìn)行了描述等,攝像頭的初始化是將這個(gè)結(jié)構(gòu)體寫(xiě)入驅(qū)動(dòng)之中。這個(gè)操作通過(guò)ioctl完成,涉及到的命令 包 括 VIDIOC_QUERYCAP,VIDIOC_S_FMT,VIDIOC_S_PARM,VIDIOC_REQBUFS,VIDIOC_QUERYBUF,并通過(guò)mmap完成內(nèi)存的映射。將圖像數(shù)據(jù)輸出到網(wǎng)頁(yè)客戶端,在視屏流服務(wù)器中是通過(guò)TCP/IP網(wǎng)絡(luò)編程模型來(lái)實(shí)現(xiàn)視屏圖像數(shù)據(jù)的傳輸,當(dāng)每有一個(gè)客戶端連接到本視頻流服務(wù)器時(shí),就創(chuàng)建一個(gè)線程單獨(dú)和這個(gè)請(qǐng)求通信,本文涉及到的函數(shù)包括 socket、bind、listen、accept和 write。這里涉及到的函數(shù)包括pthread_create、pthread_detach、pthread_cond_init、pthread_cond_destroy、pthread_mutex_init、pthread_mutex_destroy。

圖11 MJPEG-STREAM抽象圖

當(dāng)USB攝像頭采集到圖像數(shù)據(jù)時(shí),V4L2驅(qū)動(dòng)程序會(huì)將圖片數(shù)據(jù)上報(bào)給用戶層的視頻流服務(wù)器的采集模塊Input_uvc.so動(dòng)態(tài)庫(kù)程序,Input_uvc.so主要完成的工作是分配臨時(shí)緩存和做一些清理工作,同時(shí)判斷視頻圖像數(shù)據(jù)是否是MJPEG格式,若不是需要將該視屏圖像數(shù)據(jù)轉(zhuǎn)換MJPEG格式,然后將圖片數(shù)據(jù)存入全局的*buf緩存中,通過(guò)simplified_jpeg_encoder將圖像數(shù)據(jù)進(jìn)行壓縮,最終通過(guò)Output_uvc.so動(dòng)態(tài)庫(kù)程序?qū)D像數(shù)據(jù)通過(guò)socket通信將圖像數(shù)據(jù)傳遞到網(wǎng)頁(yè)客戶端。

3.6 在LCD液晶屏上顯示監(jiān)控視屏

本系統(tǒng)實(shí)現(xiàn)了將攝像頭采集來(lái)的圖像數(shù)據(jù)在LCD液晶屏上顯示,其工作流程如圖12所示,當(dāng)應(yīng)用層程序獲取到底層驅(qū)動(dòng)程序采集來(lái)的圖像數(shù)據(jù)時(shí),首先將圖像數(shù)據(jù)放入VideoBuf緩沖區(qū)中,接下來(lái)需要判斷數(shù)據(jù)格式是否為RGB格式,若不是需要進(jìn)行格式轉(zhuǎn)換,因?yàn)長(zhǎng)CD控制器只支持RGB格式的像素,同時(shí)由于LCD液晶屏的大小有限,所以在必要時(shí)必須進(jìn)行圖像的縮放,最后將視頻圖像數(shù)據(jù)放入FrameBuf幀緩存之中,供LCD控制器的使用。

4 系統(tǒng)測(cè)試

系統(tǒng)上電之后,首先啟動(dòng)bootloader并初始化相關(guān)的硬件,bootloader加載內(nèi)核并執(zhí)行,內(nèi)核啟動(dòng)起來(lái)會(huì)掛接根文件系統(tǒng),在這時(shí)BOA服務(wù)器和視頻流服務(wù)器啟動(dòng)起來(lái)。主控電路板和wifi局域網(wǎng)絡(luò)處于同一網(wǎng)段,只要客戶端通過(guò)手機(jī)或PC機(jī)連接入這個(gè)局域網(wǎng),在瀏覽器上輸入主控開(kāi)發(fā)板IP地址,就會(huì)在客戶端刷出WEB網(wǎng)頁(yè)。如圖13和圖14所示,分別給出了在PC機(jī)客戶端和手機(jī)客戶端同時(shí)實(shí)時(shí)的顯示倉(cāng)庫(kù)現(xiàn)場(chǎng)狀況的視頻監(jiān)控狀況。

圖12 在液晶屏上顯示視屏的基本流程

圖13 PC機(jī)客戶端的視頻監(jiān)控狀況

圖14 手機(jī)客戶端的視頻監(jiān)控狀況

當(dāng)用戶點(diǎn)擊上開(kāi)啟攝像頭時(shí),就會(huì)將USB攝像頭采集來(lái)的視頻監(jiān)控圖像通過(guò)視頻流服務(wù)器傳到客戶端的網(wǎng)頁(yè)上達(dá)到視頻監(jiān)控的目的,當(dāng)用戶點(diǎn)擊開(kāi)啟LCD監(jiān)控時(shí)就會(huì)將監(jiān)控視頻數(shù)據(jù)顯示到LCD液晶屏上,如圖15所示,達(dá)到多角度,多場(chǎng)景監(jiān)控的目的。同時(shí)也實(shí)現(xiàn)了通過(guò)客戶端網(wǎng)頁(yè)實(shí)現(xiàn)對(duì)臥室燈的開(kāi)關(guān)控制,開(kāi)關(guān)報(bào)警器,和開(kāi)關(guān)門(mén)窗的功能。

圖15 在LCD液晶顯示屏上顯示倉(cāng)庫(kù)監(jiān)控視頻

5 結(jié)論

本系統(tǒng)實(shí)現(xiàn)了基于Linux的智能倉(cāng)庫(kù)控制系統(tǒng),實(shí)現(xiàn)了智能多方位監(jiān)控、自動(dòng)開(kāi)關(guān)門(mén)窗、自動(dòng)報(bào)警等功能。本文對(duì)硬件原理進(jìn)行分析,設(shè)計(jì)了整個(gè)智能倉(cāng)庫(kù)控制系統(tǒng)的軟件架構(gòu),對(duì)其中的關(guān)鍵技術(shù)做了詳細(xì)的分析與論證。

1)經(jīng)過(guò)不斷的測(cè)試表明該智能倉(cāng)庫(kù)控制系統(tǒng)運(yùn)行穩(wěn)定,沒(méi)有出現(xiàn)系統(tǒng)突然死機(jī)或重啟的現(xiàn)象,各個(gè)模塊間的工作互不影響。同時(shí)解決了現(xiàn)有的智能倉(cāng)庫(kù)控制系統(tǒng)存在系統(tǒng)上的不簡(jiǎn)潔,擴(kuò)展性不強(qiáng)的缺陷。

2)受倉(cāng)庫(kù)局域wifi網(wǎng)絡(luò)覆蓋面積小的影響,使得用戶無(wú)法遠(yuǎn)距離的操縱倉(cāng)庫(kù)設(shè)備和監(jiān)控室內(nèi)的相關(guān)情況。所以在此智能倉(cāng)庫(kù)控制系統(tǒng)的基礎(chǔ)之上將局域網(wǎng)絡(luò)擴(kuò)展為廣域網(wǎng),使其用戶無(wú)論在何處都能對(duì)倉(cāng)庫(kù)設(shè)備進(jìn)行操作與監(jiān)控。

3)智能倉(cāng)庫(kù)的大規(guī)模應(yīng)用將很大程度地節(jié)約人力勞動(dòng)和資源成本,提高工作效率和管理水平,為研發(fā)高性能、高安全性的智能倉(cāng)庫(kù)打下了基礎(chǔ)。

參考文獻(xiàn):

[1] 劉建周.物聯(lián)網(wǎng)的概念及發(fā)展[J].中國(guó)科技術(shù)語(yǔ),2011,13(5):56-58.

[2] 劉文峰,李程遠(yuǎn),李善平,等.嵌入式Linux操作系統(tǒng)的研究[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2004,38(4):447-452.

[3]RICHARD STEVENS W.Advanced Programming in the UNIX Environment[J].agricatural systems,2014,39(4):23-26.

[4] TINELLI L M,LIVIALDINI K C T,BECKER M.Intelligentwarehouse productposition optimization by applying a multi-criteria tool[J].Communications in Computer and Information Science,2013(371):137-145.

[5] HERBERT S B.Method used to salvage warehouse subjected to severe settlement and practice[J].Periodical Structure and Construction,1997,2(2):131-136.

[6] 曹建剛,王鳴.基于嵌入式系統(tǒng)的智能倉(cāng)庫(kù)網(wǎng)絡(luò)實(shí)現(xiàn)[J].安徽工程科技學(xué)院學(xué)報(bào),2006,21(4):43-47.

[7] 張煥國(guó),李晶,潘丹鈴,等.嵌入式系統(tǒng)可信平臺(tái)模塊研究[J].計(jì)算機(jī)研究與發(fā)展,2011,48(7):1269-1278.

[8] 陳傳軍.自動(dòng)化立體倉(cāng)庫(kù)智能調(diào)度系統(tǒng)研究[D].北京:機(jī)械科學(xué)研究總院,2006:5-16.

[9] 楊文強(qiáng).基于智能方法的自動(dòng)化立體倉(cāng)庫(kù)系統(tǒng)優(yōu)化研究及應(yīng)用[D].上海:上海大學(xué),2014:3-16.

[10]童曉渝,房秉毅,張?jiān)朴?等.物聯(lián)網(wǎng)智能家居發(fā)展分析[J].移動(dòng)通信,2010,34(9):16-20.

[11]劉士立.基于Linux的智能倉(cāng)庫(kù)引導(dǎo)系統(tǒng)[D].蘇州:蘇州大學(xué),2012:13-21.

[12]周星君.基于Android的智能倉(cāng)庫(kù)管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].鄭州:解放軍信息工程大學(xué),2013:5-17.

[13]熊宗接.糧倉(cāng)遠(yuǎn)程智能監(jiān)控系統(tǒng)的應(yīng)用研究[D].武漢:華中科技大學(xué),2013:3-13.

[14]李素敏.智能倉(cāng)庫(kù)的設(shè)計(jì)[J].電子世界,2014,21(12):140.

[15]王明.基于物聯(lián)網(wǎng)的倉(cāng)庫(kù)智能監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2015:5-17.

[16]王海濤.基于智能對(duì)象的倉(cāng)庫(kù)作業(yè)管理關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].重慶:重慶大學(xué),2016:5-14.

[17]劉瑞龍.基于STC單片機(jī)智能倉(cāng)庫(kù)車(chē)的設(shè)計(jì)[D].濟(jì)南:齊魯工業(yè)大學(xué),2015:4-13.

[18]周燕.基于STM32的智能倉(cāng)庫(kù)尋物系統(tǒng)設(shè)計(jì)[J].科技風(fēng),2017,11(14):26-27,29.

猜你喜歡
驅(qū)動(dòng)程序倉(cāng)庫(kù)客戶端
倉(cāng)庫(kù)里的小偷
填滿倉(cāng)庫(kù)的方法
四行倉(cāng)庫(kù)的悲壯往事
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
消防設(shè)備
客戶端空間數(shù)據(jù)緩存策略
驅(qū)動(dòng)程序更新與推薦
驅(qū)動(dòng)程序更新與推薦
准格尔旗| 东乌珠穆沁旗| 金塔县| 上饶市| 葫芦岛市| 虎林市| 玛沁县| 江山市| 凤庆县| 天镇县| 崇义县| 枝江市| 双牌县| 威远县| 梓潼县| 山丹县| 宜良县| 稻城县| 双柏县| 榕江县| 钦州市| 湖北省| 青神县| 宜丰县| 黄骅市| 大竹县| 来安县| 吐鲁番市| 思茅市| 横峰县| 苗栗市| 德州市| 新平| 临澧县| 易门县| 东山县| 沁阳市| 罗定市| 安乡县| 文登市| 栾城县|