一种基于嵌入式Linux的智能家居监控系统设计
在配置相关库文件选项时把这个库加入,再编译一下内核就可以使用libjpeg 库。
图像压缩封装调用image 类的compress 函数,如下所示:
Int image compress(image *newone,int quality)这个函数的功能是按照指定的quality 比率将图片压缩成JPEG 格式。函数中的两个参数分别是指向新的image 类数据的指针( 即压缩后的图像数据),另一个参数是指定压缩比率,一般范围为0~100.当数字越大,压缩得到的图片质量就越高,也就越清晰,但同时压缩后的数据文件容量越大。所以压缩比不是越大越好,需要根据实验的现实需求来确定,以满足实验功能要求且存储成本和传输成本最低为标准。
2.5 短消息的收发
嵌入式监控系统通过使用串口与GPRS 连接,通过使用GPRS模块来进行短消息的收发。SMS 短信的收发有两种模式,即文本模式和PDU 模式。文本模式只能发送变通的ASCII 字符,短信内容简单,其最大不足之处是不能收发其他字符。PDU 模式将发送的信息按照一定的格式进行新的编码,一般是十六进制数的PDU序列为主,把所有中文或者图像进行编码后再予以发送(如图2 - 1)。
编程过程如下:
1) 打开串口
打开串口设备文件需要使用标准的I/O 操作函数。
Fd=open(“/dev/ttyS0”,O_RDWR|O_NDELAY|O_NOCTTY) ;
2) 设置串口属性
串口有一些规定的属性必须进行设置,否则就不能正常运行,一般要设置波特率、控制模式标志、本地模式标志、输入/ 输出模式标志、控制字符等相关串口属性。
3) 清空发送/ 接收缓冲区
为了避免以前的数据的干扰,必须对缓冲区的数据进行清空之后才能把数据读入缓冲区,这样做的目的是为了避免不必要的数据干扰。
4) 从串口读写数据
串口的数据读/ 写使用的是标准的读/ 写函数(read() 和write())。
5) 关闭串口
关闭串口为下次再使用串口提供方便。关闭串口的函数是close() 函数。
2.6 彩信的发送
Linux 系统中的视频子系统为Video4Linux, 他为应用程序提供了一个完整、统一的API 函数,视频应用程序只要调用这些API 就能完成对视频捕捉设备的操作。设备的节点文件在#mknod/dev/video c810
1) 打开设备
用open() 函数来打开设备。
fVideo=open(“dev/video”,O_RDWR) ;
2) 获得设备参数
Ioctl(fVideo,VIDIOCGCAP,&vcap) ;
3) 设置图像采集参数
Ioctl(fVideo,VIDIOCGPICT,&vcap) ;
4) 图像采集
Ioctl(fVideo,VIDIOCMCAPTURE,&mem) ;
5) 等待采集结束,由于采集需要一段时间,所以应用程序需要有一个相应的等待期
Ioctl(fVideo,VIDIOCSYNC,&mem,frame) ;
6) 将采集的图像数据写入文件
Write_jpeg(buf++mb.offsets[0],mem) ;
7) 清空内存映射
Munmap(but,mb.size) ;
8) 关闭设备
Close(fVideo) ;
得到图像数据后,再把数据进行MMS 的封装,首先是加上MMS 头部分的数据封装,再对SMIL 部分封装,这里主要是指定显示MMS 的相关信息,最后对每个输入的多媒体信息进行编码。最后通过GPRS 模块把信息发送出去。
3 系统功能的测试结果
本文测试基于jpeg 格式标准的视频数据的采集、传输以及显示。由摄像头完成视频数据的采集,通过由GPRS 封装后把图像数据传输到手机。红外感应到有人进入时,摄像头取下的图像照片,并再通过GPRS 模块把图像发到用户的手机上,从而完成了有效的监控动作。
一种基于嵌入式Linux的智能家居监控系统设计
- 基于WiMAx的武警部队无线视频监控系统(05-11)
- 无线基站或变电站网络数字监控系统(03-20)
- 详解:无线监控系统在应用中的六大问题(02-18)
- 基于CDMA 1X的远程监控系统设计(05-07)
- 基于Zigbee技术的温室大棚监控系统(06-04)
- 深入无线视频监控系统 智能应用或呈爆发式增长(06-29)