Linux人工智能開(kāi)發(fā)實(shí)例 課件 4.2 安防報(bào)警功能開(kāi)發(fā)_第1頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 4.2 安防報(bào)警功能開(kāi)發(fā)_第2頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 4.2 安防報(bào)警功能開(kāi)發(fā)_第3頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 4.2 安防報(bào)警功能開(kāi)發(fā)_第4頁(yè)
Linux人工智能開(kāi)發(fā)實(shí)例 課件 4.2 安防報(bào)警功能開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例4.2安防報(bào)警功能開(kāi)發(fā)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例項(xiàng)目采用Web服務(wù)器BOA提供服務(wù),最終軟件界面使用WEB框架實(shí)現(xiàn),根據(jù)功能需求設(shè)計(jì)為三個(gè)主要的功能界面,分別如下:1)視頻監(jiān)控頁(yè)面:通過(guò)mjpg-streamer實(shí)時(shí)顯示USB攝像頭視頻流。2)報(bào)警設(shè)置頁(yè)面:顯示當(dāng)前傳感器報(bào)警狀態(tài),報(bào)警參數(shù)設(shè)置,顯示報(bào)警日志。3)報(bào)警顯示頁(yè)面:顯示報(bào)警拍攝的照片。4.2.1軟件界面框架分析網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例系統(tǒng)中有一項(xiàng)比較重要的功能配置信息保存功能,通過(guò)數(shù)據(jù)結(jié)構(gòu)保存到文件,與文件到數(shù)據(jù)結(jié)構(gòu)的形式實(shí)現(xiàn)。源碼中的配置信息最終都保存到以下宏定義的文件中:4.2.2 配置信息保存功能設(shè)計(jì)#defineCONFIG_FILE"/home/zonesion/www/cfg.dat"函數(shù)名稱(chēng)函數(shù)說(shuō)明intcreate_default_config(structst_sys*dev);初始化結(jié)構(gòu)體的默認(rèn)配置信息,并保存到文件intsave_dev(structst_sys*dev);把結(jié)構(gòu)體的數(shù)據(jù)保存到文件中intload_dev(structst_sys*dev);從文件中讀取數(shù)據(jù)到結(jié)構(gòu)體中(Config文件源碼詳細(xì)請(qǐng)查看文檔)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例燃?xì)鈧鞲衅鞯囊_4接ADIN引腳,連接的是rk3399內(nèi)部的adc1通道,如圖所示。。4.2.3燃?xì)鈧鞲衅鱈inux驅(qū)動(dòng)開(kāi)發(fā)(具體命令詳細(xì)請(qǐng)查看文檔)ADC驅(qū)動(dòng)已經(jīng)被編譯到缺省內(nèi)核中,因此不需要使用insmod方式加載。linux系統(tǒng)已經(jīng)自帶有了ADC通用驅(qū)動(dòng)文件,它是以平臺(tái)驅(qū)動(dòng)設(shè)備模型的架構(gòu)來(lái)編寫(xiě)的,里面是一些比較通用穩(wěn)定的代碼,但是該通用驅(qū)動(dòng)文件并不完善,有些函數(shù)是并不存在的。ADC驅(qū)動(dòng)也可以使用混雜(misc)設(shè)備驅(qū)動(dòng)來(lái)進(jìn)行編寫(xiě),ADC的驅(qū)動(dòng)實(shí)現(xiàn)方法種類(lèi)繁多,本節(jié)采用內(nèi)核自帶的ADC驅(qū)動(dòng)。網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例1)設(shè)備樹(shù)文件位于gw3399-linux/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi2)重要結(jié)構(gòu)體4.2.3燃?xì)鈧鞲衅鱈inux驅(qū)動(dòng)開(kāi)發(fā)(具體命令以及pobe源碼詳細(xì)請(qǐng)查看文檔)

傳感器Linux驅(qū)動(dòng)分析staticconststructiio_inforockchip_saradc_iio_info={ .read_raw=rockchip_saradc_read_raw,//rockchip_saradc_read_raw函數(shù)用來(lái)讀取adc數(shù)據(jù) .driver_module=THIS_MODULE,};3)pobe函數(shù)probe函數(shù)實(shí)現(xiàn)了寄存器地址的設(shè)置,時(shí)鐘頻率,參考電壓等設(shè)置網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例燃?xì)鈧鞲衅鞯腁DC驅(qū)動(dòng)測(cè)試通過(guò)sysfs方式進(jìn)行操作,首先調(diào)用open函數(shù)打開(kāi)按鍵設(shè)備文件"/sys/devices/platform/ff100000.saradc/iio:device0",接著在adcReadRaw中調(diào)用設(shè)備文件的read函數(shù)讀取ADC接口原始電壓數(shù)據(jù),讀取的數(shù)據(jù)在adcReadCh0Volage函數(shù)轉(zhuǎn)換成有效氣體檢測(cè)數(shù)據(jù)。4.2.3燃?xì)鈧鞲衅鱈inux驅(qū)動(dòng)開(kāi)發(fā)(僅展示部分代碼具體源碼詳細(xì)請(qǐng)查看文檔)Linux應(yīng)用程序接口intadcReadRaw(intch){ intret=-1; if(ch>=0&&ch<=5){ charbuf[128]; snprintf(buf,128,DEVDIR"/in_voltage%d_raw",ch); intfd=open(buf,O_RDONLY); if(fd>0){ ret=read(fd,buf,128); if(ret>0){ buf[ret]='\0'; ret=atoi(buf); } close(fd); }網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例報(bào)警主應(yīng)用程序是系統(tǒng)項(xiàng)目在網(wǎng)關(guān)上運(yùn)行的核心程序,程序運(yùn)行流程與功能說(shuō)明:1)初始化共享內(nèi)存、命令管道2)load_dev(g_dev)加載配置文件數(shù)據(jù)3)啟動(dòng)mjpg-streamer服務(wù)4)讀取TVOC傳感器數(shù)據(jù)5)對(duì)傳感器當(dāng)前數(shù)值與設(shè)置的限值進(jìn)行比較,超限報(bào)警拍照并記錄6)從命名文件讀取用戶(hù)設(shè)置的報(bào)警限值7)系統(tǒng)結(jié)構(gòu)體數(shù)據(jù)復(fù)制到共享內(nèi)存8)數(shù)據(jù)保存到配置文件9)休眠1秒繼續(xù)到4)步驟進(jìn)行循環(huán)4.2.4報(bào)警管理功能設(shè)計(jì)

報(bào)警主應(yīng)用程序設(shè)計(jì)函數(shù)名稱(chēng)功能說(shuō)明void*set_web_shm(void);設(shè)置共享內(nèi)存intinit_fifo(void);初始化命名管道Voidcopy_to_shm(structst_sys*shm_dev);

voiddo_snap(void);系統(tǒng)報(bào)警后的拍照功能處理(主應(yīng)用程序源碼詳細(xì)請(qǐng)查看文檔)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例本項(xiàng)目中使用到共享內(nèi)存與命名管道的進(jìn)程間通信機(jī)制,共享內(nèi)存用于主應(yīng)用程序與Web應(yīng)用程序間共享系統(tǒng)主結(jié)構(gòu)體數(shù)據(jù),命名管道用于Web應(yīng)用程序向主應(yīng)用程序傳遞用戶(hù)設(shè)置的配置信息,通信結(jié)構(gòu)圖如圖所示。Linux進(jìn)程間通信設(shè)計(jì)4.2.4報(bào)警管理功能設(shè)計(jì)(源碼詳細(xì)請(qǐng)查看文檔)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例報(bào)警設(shè)置頁(yè)面功能由兩個(gè)程序構(gòu)成,說(shuō)明如下:1)alarm.cgi程序,顯示傳感數(shù)據(jù),進(jìn)行報(bào)警參數(shù)設(shè)置,顯示報(bào)警記錄。2)alarm_post.cgi程序,接收用戶(hù)設(shè)置的報(bào)警上限值寫(xiě)入命名管道中。用戶(hù)通過(guò)web頁(yè)面的表單的get方法把設(shè)置的上限值傳給后臺(tái)的CGI程序處理,后臺(tái)CGI程序通過(guò)getenv()讀取環(huán)境變量獲得數(shù)值寫(xiě)入命名管道。

報(bào)警設(shè)置頁(yè)面設(shè)計(jì)4.2.4報(bào)警管理功能設(shè)計(jì)(報(bào)警設(shè)置頁(yè)面程序源碼以及alarm_post.c程序文件源碼詳細(xì)請(qǐng)查看文檔)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例系統(tǒng)主程序中會(huì)定時(shí)判斷(30秒)當(dāng)前采集的燃?xì)鈧鞲衅鲾?shù)據(jù)是否超過(guò)用戶(hù)設(shè)置的上限值,如果超過(guò)會(huì)調(diào)用do_snap()函數(shù)進(jìn)行處理。處理流程如下:1)執(zhí)行腳本文件kill_mjpg.sh關(guān)閉系統(tǒng)中的mjpg_streamer后臺(tái)服務(wù)進(jìn)程2)刪除照片保存目錄下舊照片3)通過(guò)mjpg-streamer服務(wù)的output_file.so文件輸出功能,把視頻流保存為jpeg文件4)sleep(5)休眠5秒鐘,讓mjpg-streamer服務(wù)可以保存4張照片文件5)執(zhí)行腳本文件kill_mjpg.sh關(guān)閉系統(tǒng)中的mjpg_streamer后臺(tái)服務(wù)的照片輸出進(jìn)程6)重新啟動(dòng)mjpg-streamer服務(wù)的output_http.so網(wǎng)頁(yè)視頻流輸出功能7)把照片保存目錄下的文件重新命名,方便照片顯示網(wǎng)頁(yè)讀取顯示

觸發(fā)拍照功能設(shè)計(jì)4.2.5報(bào)警拍照功能設(shè)計(jì)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例報(bào)警圖片顯示頁(yè)面是html程序,功能是讀取指定目錄下的指定文件名圖片在頁(yè)面上顯示,如圖所示。

報(bào)警圖片顯示頁(yè)面設(shè)計(jì)(完整源碼詳細(xì)請(qǐng)查看文檔)4.2.5報(bào)警拍照功能設(shè)計(jì)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例1、硬件連接與測(cè)試本項(xiàng)目中使用到智能網(wǎng)關(guān)、高清攝像頭。高清攝像頭連接網(wǎng)關(guān)的USB3.0接口,硬件連接如圖所示。4.2.6開(kāi)發(fā)實(shí)踐:視頻安防系統(tǒng)網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例2、Boa編譯與安裝1)通過(guò)Moba軟件復(fù)制boa源碼到邊緣計(jì)算網(wǎng)關(guān)2)解壓源碼,運(yùn)行配置命令./configure(完整命令源碼詳細(xì)請(qǐng)查看文檔)4.2.6開(kāi)發(fā)實(shí)踐:視頻安防系統(tǒng)3)修訂源碼4)boa配置網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例3、安防管理功能測(cè)試在網(wǎng)關(guān)的當(dāng)前用戶(hù)目錄創(chuàng)建www目錄。(完整命令源碼詳細(xì)請(qǐng)查看文檔)4.2.6開(kāi)發(fā)實(shí)踐:視頻安防系統(tǒng)$sudomkdir/home/zionsion/www修改boa服務(wù)器的配置文件,設(shè)置web頁(yè)面與CGI文件目錄為/home/zoinsion/www。通過(guò)下述命令后臺(tái)運(yùn)行boa服務(wù)器。$boa&將“WebBoa”目錄下的全部文件復(fù)制到邊緣計(jì)算網(wǎng)關(guān)的/home/zoinsion/www目錄下。通過(guò)運(yùn)行安防應(yīng)用的后臺(tái)服務(wù)程序來(lái)啟動(dòng)mjpg-streamer服務(wù):./main_test網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例點(diǎn)擊頁(yè)面上的“報(bào)警設(shè)置”導(dǎo)航按鈕可以切換到報(bào)警器狀態(tài)查看與設(shè)置界面,如圖所示4.2.6開(kāi)發(fā)實(shí)踐:視頻安防系統(tǒng)使用Ping命令測(cè)試開(kāi)發(fā)主機(jī)(Windows系統(tǒng)或Linux系統(tǒng))與網(wǎng)關(guān)的網(wǎng)絡(luò)是否連通,如果網(wǎng)絡(luò)連通在主機(jī)開(kāi)啟chrome瀏覽器,輸入網(wǎng)關(guān)的IP與服務(wù)端口號(hào)(70:6080),如圖所示:網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例點(diǎn)擊頁(yè)面上的“報(bào)警照片”導(dǎo)航按鈕可以切換到系統(tǒng)觸發(fā)報(bào)警后拍照的畫(huà)面,如圖所示4.2.6開(kāi)發(fā)實(shí)踐:視頻安防系統(tǒng)界面上可以查看燃?xì)鈭?bào)警器的當(dāng)前狀態(tài),數(shù)值,報(bào)警觸發(fā)的上限。測(cè)試時(shí)可以輸入一個(gè)比當(dāng)前讀數(shù)小的上限值,進(jìn)行報(bào)警測(cè)試,設(shè)置成功界面如圖所示網(wǎng)絡(luò)視頻監(jiān)控Linux開(kāi)發(fā)案例4.2.7小結(jié)本節(jié)學(xué)習(xí)了網(wǎng)絡(luò)視頻安防系統(tǒng)的軟件界面架構(gòu),學(xué)會(huì)分析實(shí)現(xiàn)了系統(tǒng)配置信息功

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論