freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

智能家居安防系統(tǒng)的研究與設(shè)計(jì)畢業(yè)論文(參考版)

2025-06-27 17:55本頁(yè)面
  

【正文】 。 測(cè)試內(nèi)容(1)內(nèi)核移植在前面把內(nèi)核成功移植到嵌入式設(shè)備中后,在啟動(dòng)嵌入式設(shè)備的同時(shí)就會(huì)在超級(jí)終端中看到內(nèi)核的啟動(dòng)信息,并可以通過(guò)這些啟動(dòng)信息調(diào)試系統(tǒng)。嵌入式平臺(tái)和計(jì)算機(jī)構(gòu)成一個(gè)局域網(wǎng),通過(guò)超級(jí)終端或者Linux下終端觀察系統(tǒng)運(yùn)行情況。 PC上訪問(wèn)服務(wù)器 第六章 系統(tǒng)功能測(cè)試第一節(jié) 測(cè)試環(huán)境及內(nèi)容測(cè)試使用基于Intel Xscale芯片的嵌入式實(shí)驗(yàn)平臺(tái)和一臺(tái)普通的計(jì)算機(jī)。在視頻監(jiān)控演示中,通過(guò)實(shí)現(xiàn)一個(gè)普通的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)來(lái)讓用戶對(duì)系統(tǒng)有一個(gè)直觀的印象和感受。使用Macromedia Dreamweaver軟件在PC上設(shè)計(jì)網(wǎng)站結(jié)構(gòu),網(wǎng)站包括三大主要內(nèi)容:系統(tǒng)介紹、視頻監(jiān)控演示、系統(tǒng)總結(jié)。最后讓用戶可以實(shí)現(xiàn)像訪問(wèn)普通網(wǎng)絡(luò)設(shè)備一樣訪問(wèn)嵌入式中的資源。第三節(jié) 建立網(wǎng)站構(gòu)架好一個(gè)嵌入式視頻服務(wù)器后,還不能直接使用服務(wù)器中的資源,還需要一個(gè)連接用戶和服務(wù)器的統(tǒng)一接口,這就是網(wǎng)站。 Boa視頻服務(wù)器啟動(dòng)嵌入式Boa視頻服務(wù)器正常運(yùn)行一段時(shí)間后就需要維護(hù)和整理,Boa和一般服務(wù)器一樣,它會(huì)自動(dòng)記載所有訪問(wèn)記錄和出錯(cuò)日志。Boa視頻服務(wù)器在啟動(dòng)后,就可以接受外地的連接申請(qǐng),客戶端就可以通過(guò)網(wǎng)頁(yè)訪問(wèn)嵌入式Boa視頻服務(wù)器網(wǎng)站的資源了。經(jīng)過(guò)以上步驟,基本完成了對(duì)Boa視頻服務(wù)器的配置和移植,可以在arm中正常使用。這樣還不能直接編譯,把define TIMEZONE_OFFSET(foo) footm_gmtoff修改成define TIMEZONE_OFFSET(foo) (foo)tm_gmtoff,最后執(zhí)行make命令編譯boa視頻服務(wù)器。我們采用的編譯器是armlinuxgcc。至此,我們就完成了對(duì)Boa視頻服務(wù)器的配置。則注釋掉,則必須使用AddType application/xdcgi cgi指明文檔重定向路徑Redirect /bar ://elsewhere/feh/bar為路徑加上別名Alias /doc /usr/doc非常重要,指明CGI腳本的虛擬路徑對(duì)應(yīng)的實(shí)際路徑。如果沒(méi)有以/開始,則表示從服務(wù)器的根路徑開始。如果沒(méi)有以/開始,則表示從服務(wù)器的根路徑開始。注釋掉則使用UTC時(shí)間UseLocaltime是否記錄CGI運(yùn)行信息,如果沒(méi)有注釋掉,則記錄,注釋掉則不記錄VerboseCGILogs服務(wù)器名字ServerName 是否啟動(dòng)虛擬主機(jī)功能,即設(shè)備可以有多個(gè)網(wǎng)絡(luò)接口,每個(gè)接口都可以擁有一個(gè)虛擬的Web服務(wù)器。在下面設(shè)置時(shí),注意一定要建立/var/log/boa目錄AccessLog /var/log/boa/access_log是否使用本地時(shí)間。如果沒(méi)有以/開始,則表示從服務(wù)器的根路徑開始。如果不需要錯(cuò)誤日志,則用/dev/null。Boa的配置文件在Boa的安裝目錄下,可以根據(jù)它進(jìn)行修改,下面介紹一下具體配置:監(jiān)聽的端口號(hào),缺省都是80,一般無(wú)需修改Port 80 bind調(diào)用的IP地址,一般注釋掉,表明綁定到INADDR_ANY,通配于服務(wù)器的所有IP地址Listen 作為哪個(gè)用戶運(yùn)行,即它擁有該用戶的權(quán)限,一般都是nobody,需要/etc/passwd中有nobody用戶User nobody作為哪個(gè)用戶組運(yùn)行,即它擁有該用戶組的權(quán)限,一般都是nogroup,需要在/etc/group文件中有nogroup組Group nogroup當(dāng)服務(wù)器發(fā)生問(wèn)題時(shí)發(fā)送報(bào)警的地址,目前未用,注釋掉ServerAdmin rootlocalhost錯(cuò)誤日志文件。二、 配置網(wǎng)絡(luò)視頻服務(wù)器Boa網(wǎng)絡(luò)視頻服務(wù)器的配置是非常關(guān)鍵的一個(gè)步驟。嵌入式Web服務(wù)器Boa和普通Web服務(wù)器一樣,具有完成接收客戶端請(qǐng)求、分析請(qǐng)求、響應(yīng)請(qǐng)求、向客戶端返回請(qǐng)求結(jié)果等任務(wù)。與其他傳統(tǒng)的Web 服務(wù)器不同的是當(dāng)有連接請(qǐng)求到來(lái)時(shí),它并不為每個(gè)連接單獨(dú)創(chuàng)建進(jìn)程,也不通過(guò)復(fù)制自身進(jìn)程來(lái)處理多鏈接,而是通過(guò)建立HTTP 請(qǐng)求列表來(lái)處理多路HTTP 連接請(qǐng)求,同時(shí)它只為CGI 程序創(chuàng)建新的進(jìn)程,這樣就在最大程度上節(jié)省了系統(tǒng)資源,這對(duì)嵌入式系統(tǒng)來(lái)說(shuō)至關(guān)重要,同時(shí)它還具有自動(dòng)生成目錄、自動(dòng)解壓文件等功能。借助超文本標(biāo)記語(yǔ)言(HTML)的強(qiáng)大功能,可為用戶提供非常豐富、直觀的數(shù)據(jù)表現(xiàn)形式,提高系統(tǒng)的友好性,增強(qiáng)親和力。在嵌入式系統(tǒng)中實(shí)現(xiàn)基于TCP/IP協(xié)議棧的Embedded Web Server應(yīng)用是嵌入式系統(tǒng)智能化、網(wǎng)絡(luò)化的發(fā)展趨勢(shì)??墒?,對(duì)于有些特定情況來(lái)說(shuō),不必要也不允許使用這樣強(qiáng)大的服務(wù)器,比如嵌入式設(shè)備。可以在一臺(tái)普通的服務(wù)器上架設(shè)視頻服務(wù)器,在視頻服務(wù)器上架設(shè)網(wǎng)站、添加需要的文件,再通過(guò)視頻服務(wù)器管理軟件管理和維護(hù)視頻服務(wù)器,保證視頻服務(wù)器的正常、穩(wěn)定運(yùn)行。視頻服務(wù)器讓我們與網(wǎng)絡(luò)更加緊密的結(jié)合在一起。本系統(tǒng)傳輸中采用的是流式套接字,其中主要的函數(shù)有創(chuàng)建套接字的socket()、指定本地地址的bind()、建立連接的connect()和accept()、監(jiān)聽連接的listen()、負(fù)責(zé)數(shù)據(jù)傳輸?shù)膕end()和recv()、負(fù)責(zé)復(fù)用的select()和關(guān)閉套接字的closesocket()。否則將連接不成功。網(wǎng)域表明一個(gè)插口是用于哪一種網(wǎng)絡(luò),類型表明網(wǎng)絡(luò)中通信所遵循的模式,有面向連接的和無(wú)連接的兩種模式。所以,Linux就可以通過(guò)Socket實(shí)現(xiàn)進(jìn)程或者網(wǎng)絡(luò)之間的通信。第二節(jié) SOCKET簡(jiǎn)介Socket是一種網(wǎng)絡(luò)接口,可以把它看成網(wǎng)絡(luò)的表現(xiàn)形式。pthread_mutex_unlock (amp。headerframenbframe=frame++。headerframesize= ((jpegsize0)? 0: jpegsize)。headerframew=vdhdrwidth。headerframeseqtimes=ms_time ()。headerframe= (struct frame_t*) vdptframe [vdframe_cour]。temps=ms_time ()。 pthread_mutex_lock (amp。amp。return 0 。if (len0) {if (debug) printf (“v41 read error\n”)。vdpFramebuffer= (unsigned char*) realloc (vdpFramebuffer, (size_t) size)。對(duì)于攝像頭設(shè)備的讀取,需要先分配內(nèi)存空間,用來(lái)存儲(chǔ)從攝像頭讀取過(guò)來(lái)的視頻數(shù)據(jù),然后直接調(diào)用read系統(tǒng)調(diào)用讀取視頻數(shù)據(jù),返回值為實(shí)際讀取的視頻幀大小,也正是在視頻傳輸過(guò)程中發(fā)送的視頻數(shù)據(jù)大小。參數(shù)表為read(fd,(void*)pFramebuff,(size_t) framesizeln)。(2)直接讀取方式直接讀取視頻數(shù)據(jù)是通過(guò)read系統(tǒng)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)。}vd= (vd+1) %vd。if (debug) printf (“cmcapture err \n”)。/*截取視頻幀*/if((ioctl(vdfd,VIDIOCMCAPTURE,amp。pthread_mutex_unlock (amp。headerframeformat=vdformatln。headerframeh=vdhdrheight。 headerframedeltatimes= (int) (headerframeseqtimestimecourant)。snprintf (headerframeheader, 5,”%s”.”SPCA”)。 jpegsize=convertframe(vdptframe[vdframe_cour]+sizeof(struct frame_t),vdpFramebuffer+vd[vd],vdhdrwidth,vdhdrheight,vdformatln,vdframesizeIn)。vdgrabmutex)。vdsignalquit)usleep (1000)。}while ((vdframelock [vdframe_cour]! =0) amp。vd)0){perror (‘’cvsync err\n)。vd=vdformatln。vd=vdhdrheight。mmap()成功調(diào)用后返回系統(tǒng)實(shí)際分配的起始地址。第四個(gè)參數(shù)可以是MAP_SHARED或者M(jìn)AP_PRIVATE。第二個(gè)參數(shù)為映射到調(diào)用進(jìn)程地址空間的字節(jié)數(shù),它從被映射文件開頭offset個(gè)字節(jié)開始算起。(vdvideombuf),0,sizeof(vdvideombuf)來(lái)清零緩沖區(qū)。首先,使用ioctl系統(tǒng)調(diào)用的VIDIOCSFBUF命令獲得攝像頭存儲(chǔ)緩沖區(qū)的幀信息,之后初始化video_mbuf,修改video_mmap中的設(shè)置,重新設(shè)置圖像信息,如幀的垂直及水平分辨率、彩色顯示格式等。mmap系統(tǒng)調(diào)用使得進(jìn)程之間通過(guò)映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。嵌入式Linux系統(tǒng)支持兩種視頻數(shù)據(jù)采集的方式:內(nèi)存映射、直接讀取視頻。vdgrabmutex)。 if (debug) printf (freeing output buffer %d\n, i)。 vdptframe[i] = NULL。 i OUTFRMNUMB。 vdcameraname = NULL。 vdvideodevice = NULL。 close (vdfd)。 vdpFramebuffer = NULL。 munmap (vdpFramebuffer, vdmmapsize)。int close_v4l (struct vdIn *vd){ int i。同樣道理,如果采用的是直接讀取,則在任務(wù)完成后關(guān)閉直接讀取,然后在關(guān)閉攝像頭設(shè)備。(5) 關(guān)閉攝像頭在Linux編程過(guò)程中,必須養(yǎng)成一個(gè)好的編程習(xí)慣,就是在開啟一個(gè)設(shè)備后一定要關(guān)閉它,這樣可以避免很多諸如內(nèi)存泄露等嚴(yán)重的問(wèn)題。return 1 。然后通過(guò)ioctl函數(shù)的VIDIOCSPICT來(lái)設(shè)置,如if(ioctl(vdfd,VIDIOCSPICT,amp。}(4) 設(shè)置攝像頭參數(shù)在對(duì)攝像頭參數(shù)進(jìn)行設(shè)置的時(shí)候,應(yīng)該按照以下步驟:比如更改圖像信息,首先,先給video_picture結(jié)構(gòu)中所要修改的變量賦值,如vd=vdformaIn。(vdvideowin))==1) { printf (“Fail to get video_window! /n”)。return 1 。} 讀取video_picture中的圖像信息 if (ioctl (vdfd, VIDIOCGPICT, amp。 (vdvideocap)) ==1) {printf (“Fail to get video_capability! /n”)。其中,cmd包括VIDIOCGCAP(獲得video_capbility中有關(guān)攝像頭的信息)、VIDIOCGPICT(獲取圖像信息)、VIDIOCSPICT(改變圖像信息)、VIDIOCGMBUF(獲取攝像頭存儲(chǔ)緩沖區(qū)幀信息)、VIDIOCAMCAPTURE(獲取視頻圖像)、VIDIOSYNC(判斷攝像頭是否截取成功)等。}(3)獲取攝像頭參數(shù)成功打開攝像頭后,需要獲取攝像頭的一些參數(shù),利用ioctl函數(shù)控制I/O通道來(lái)實(shí)現(xiàn)。 return 1 。 return 1 。Open函數(shù)執(zhí)行結(jié)束后會(huì)返回?cái)z像頭的文件描述符,如果返回值為1,則說(shuō)明打開設(shè)備出錯(cuò)。我們可以使用open函數(shù)來(lái)對(duì)設(shè)備進(jìn)行打開操作,open帶有兩個(gè)參數(shù),第一個(gè)為設(shè)備文件名稱,本實(shí)驗(yàn)的攝像頭設(shè)備名稱是/dev/video0,第二個(gè)則是打開的類型。 return err。 pthread_mutex_init (amp。 vdframelock[i] = 0。 i++) { vdptframe[i] = NULL。 for (i = 0。 vdpFramebuffer = NULL。 vdbppIn = GetDepth (vdformatIn)。 vdhdrheight = height。 vdsignalquit = 1。 memset (vdcameraname, 0, sizeof (vdcameraname))。 snprintf (vdvideodevice, 12, %s, device)。 vdvideodevice = (char *) realloc (vdvideodevice, 16)。 vdcameraname = NULL。 //read by default。 if (width == 0 || height == 0) return 1。 int i。使用init_videoIn 函數(shù)。struct video_channal videochan :關(guān)于信號(hào)源的屬性。struct video_picture videopict :攝像頭采集圖像的屬性,如亮度、色調(diào)、對(duì)比度、色度、深度等。struct video_capability videocap :描述攝像頭基本信息,如設(shè)備名稱、支持的最大分辨率、信號(hào)源信息、信道數(shù)等。int fd :打開攝像頭時(shí),open函數(shù)返回的文件描述符,其他函數(shù)使用這個(gè)描述符對(duì)攝像頭進(jìn)行操作。 int signalquit。 int hdrheight。 int bppIn。 int framesizeIn。 int f
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1