如何基于嵌入式Linux設(shè)計(jì)家居監(jiān)控系統(tǒng)?
3) 清空發(fā)送/ 接收緩沖區(qū)
為了避免以前的數(shù)據(jù)的干擾,必須對(duì)緩沖區(qū)的數(shù)據(jù)進(jìn)行清空之后才能把數(shù)據(jù)讀入緩沖區(qū),這樣做的目的是為了避免不必要的數(shù)據(jù)干擾。
4) 從串口讀寫數(shù)據(jù)
串口的數(shù)據(jù)讀/寫使用的是標(biāo)準(zhǔn)的讀/寫函數(shù)(read()和write())。
5)關(guān)閉串口
關(guān)閉串口為下次再使用串口提供方便。關(guān)閉串口的函數(shù)是close()函數(shù)。
2.6彩信的發(fā)送
Linux系統(tǒng)中的視頻子系統(tǒng)為Video4Linux,他為應(yīng)用程序提供了一個(gè)完整、統(tǒng)一的API函數(shù),視頻應(yīng)用程序只要調(diào)用這些API就能完成對(duì)視頻捕捉設(shè)備的操作。設(shè)備的節(jié)點(diǎn)文件在#mknod/dev/videoc810
1)打開設(shè)備
用open()函數(shù)來打開設(shè)備。
fVideo=open(“dev/video”,O_RDWR);
2)獲得設(shè)備參數(shù)
Ioctl(fVideo,VIDIOCGCAP,vcap);
3)設(shè)置圖像采集參數(shù)
Ioctl(fVideo,VIDIOCGPICT,vcap);
4)圖像采集
Ioctl(fVideo,VIDIOCMCAPTURE,mem);
5)等待采集結(jié)束,由于采集需要一段時(shí)間,所以應(yīng)用程序需要有一個(gè)相應(yīng)的等待期
Ioctl(fVideo,VIDIOCSYNC,mem,frame);
6)將采集的圖像數(shù)據(jù)寫入文件
Write_jpeg(buf++mb.offsets[0],mem);
7)清空內(nèi)存映射
Munmap(but,mb.size);
8)關(guān)閉設(shè)備
Close(fVideo);
得到圖像數(shù)據(jù)后,再把數(shù)據(jù)進(jìn)行MMS的封裝,首先是加上MMS頭部分的數(shù)據(jù)封裝,再對(duì)SMIL部分封裝,這里主要是指定顯示MMS的相關(guān)信息,最后對(duì)每個(gè)輸入的多媒體信息進(jìn)行編碼。最后通過GPRS模塊把信息發(fā)送出去。
3系統(tǒng)功能的測(cè)試結(jié)果
本文測(cè)試基于jpeg格式標(biāo)準(zhǔn)的視頻數(shù)據(jù)的采集、傳輸以及顯示。由攝像頭完成視頻數(shù)據(jù)的采集,通過由GPRS封裝后把圖像數(shù)據(jù)傳輸?shù)绞謾C(jī)。紅外感應(yīng)到有人進(jìn)入時(shí),攝像頭取下的圖像照片,并再通過GPRS模塊把圖像發(fā)到用戶的手機(jī)上,從而完成了有效的監(jiān)控動(dòng)作。
評(píng)論