基于嵌入式Linux的机房远程监测系统研究

时间:2012-08-06来源:网络

3. 2 ZC0301 摄像头视频采集程序设计

Video4linux 是Linux 内核里支持影像设备的一组API,配合适当的采集卡与相关驱动程序,可以实现视频采集。驱动视频采集设备完成视频采集和处理,需要相应的驱动程序和视频流采集程序。视频采集程序的内容主要包括摄像头的初始化、打开、关闭、参数设置以及数据读取等。

Video4linux 视频采集的实现过程如下:

( 1) 初始化程序,包括打开视频设备文件,读取视频采集设备信息以及设备缓冲区信息等; 初始化摄像头参数主要通过init_videoIn 函数来完成。

( 2) 打开视频采集设备。初始化工作完成后,通过V4L_open 函数检查摄像头设备是否加载,如能够检测到摄像头设备,使用open 系统调用以只读的方式打开视频设备。

( 3) 获取视频设备信息和图像信息。通过调用设备I /O 通道管理函数ioctl 中的VIDIOCGCAP 参数获取视频采集设备的名称、类型、通道数、图像宽度和高度等信息参数,调用ioctl 函数中的VIDIOCGPICT 参数读取视频采集设备缓冲video_picture 信息。

( 4) 视频采集。在V4L 体系下,采用内存映射方式采集视频。内存映射方式视频读取的具体操作如下:

①首先使用ioctl 系统调用VIDOOCGMBUF 命令获取摄像头存储缓冲区的帧信息,之后初始化video_mbuf,修改video_mmbuf 设置。

②映射设备文件到内存。

③截取图像,有单帧截取和连续帧截取两种方式。进行单帧截取需先准备内存空间; 然后调用ioctl 函数的VIDIOCMCAPTURE 命令,以非阻塞形式开始一帧图像截取; 接着调用ioctl( fd,VIDIOCSYNC,&frame)函数判断该帧是否截取完毕; 最后就可将图像数据写入到Frame Buffer 中。若进行连续帧截取,则需通过循环语句中,使用VIDIOCMCAPTURE 和VIDIOCSYNC 函数判断是否完成截取,并给采集到的每帧图像赋地址。

( 5) 关闭摄像头。视频采集完成以后,最后的工作是关闭视频采集设备。以内存映射的方法获取视频数据,需要在视频采集任务完成之后关闭内存映射,然后调用close_v4l 函数关闭视频设备。关闭视频设备需要判断视频获取方式: 如是内存映射方式,则通过munmap 函数。

4 嵌入式Web 监控的实现

嵌入式Web 监控的实现包括了Boa 服务器移植、CGI 网页交互程序设计两个部分。

4. 1 Boa 服务器移植

在嵌入式远程监控系统中,Web 服务器的性能对系统的整体性能具有直接影响,因此Web 服务器的选择和设计尤为重要。高效率的Web 服务器,才能使监控系统的能得到充分的发挥。

Boa 是一款单任务的HTTP 服务器,它支持CGI 技术,且具有自动生成目录和解压文件等功能。在运行效率方面,由于其只为CGI 程序创建新的进程,因此具有很高的HTTP 请求处理速度。故选用Boa 来构建嵌入式服务器。

服务器主要作用是为整个系统提供了一种网络接入和信息服务方式。系统通过应用HTTP 协议联网,调用具有数据请求和控制功能的CGI 程序,实现服务器对客户端浏览器请求的处理,最终实现信息在浏览器的动态显示,达到远程监控的目的。

4. 2 CGI 网页交互程序设计

CGI 技术即通用网关接口( Common Network Interface) 技术,它支持WEB 数据动态刷新、转换和显示。

基于CGI 接口设计的程序运行在WEB 服务器端,像其他类型程序设计一样,其必须通过CGI 标准格式进行编写。CGI 程序的运行由浏览器端的输入触发,它的任务就是执行指令,将所需数据转换为环境变量进行处理,并回传处理结果。WEB 服务器与CGI 程序之间通过四种途径进行通信: 环境变量、命令行、标准输入和标准输出。

CGI 的基本工作过程为: 根据浏览器的请求,CGI 程序通过执行Boa 服务器指令,调用其它应用程序进行处理,最后将处理结果以HTML 形式反馈给浏览器显示。CGI 工作流程示意图如图3 所示。

图3 CGI 工作流程示意图
图3 CGI 工作流程示意图

4. 3 系统测试

本系统的测试工作主要是在实验室的局域网环境下进行的。

其中下位机为以S3C2440 处理器为核心的嵌入式目标板,配合ZC0301 摄像头和数字温度传感器DS18B20,通过构建Linux 操作系统并移植Boa,将其配置成为嵌入式服务器; 下位机采用通用的PC 机,通过浏览器与服务器进行交互。上位机监控端和下位机嵌入式服务器通过网线和上位机相连接,构建成为局域网开发环境。

1 2 3 4

关键词: 监测 系统 研究 远程 机房 嵌入式 Linux 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版