来源:中国一卡通网 作者:中国一卡通收录 发布时间:2011-12-01 13:39:26 字体:[大 中 小]
摘 要:本系统采用模块化的结构设计思想,将设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据不同的需要选用不同的功能模块,各种类型的数据可以同时传输而不相互干扰,同时也可根据市场的需求继续扩展其它功能模块。远程无线视频监控系统是由以下几个模块组成:嵌入式 ARM2410 核心控制模块、自动报警模块一面使嵌入式模块上的蜂鸣器发出警报声,同时发送报警信号通过GPRS 网络及时的传回远端的监控管理中心,以便管理人员及时发现并处理火情、传感器数据处理模块、USB 摄像头视频图像采集处理模块、GPRS 无线数据传输模块、远程监控软件模块。
本系统采用模块化的结构设计思想,将设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据不同的需要选用不同的功能模块,各种类型的数据可以同时传输而不相互干扰,同时也可根据市场的需求继续扩展其它功能模块。远程无线视频监控系统是由以下几个模块组成:嵌入式 ARM2410 核心控制模块、自动报警模块一面使嵌入式模块上的蜂鸣器发出警报声,同时发送报警信号通过GPRS 网络及时的传回远端的监控管理中心,以便管理人员及时发现并处理火情、传感器数据处理模块、USB 摄像头视频图像采集处理模块、GPRS 无线数据传输模块、远程监控软件模块。
1.系统结构
图1 系统结构图
1.1 USB摄像头驱动
USB核心在系统中起着重要的作用,它提供了一些专用的API供设备驱动层操作,而对主控制器的操作则由系统完成了,USB核心层对主控制器层的数据结构和操作进行了封装。在编写USB驱动时,只需要和USB核心层进行交互。对于具体设备的驱动编写主要也是设备层驱 动的编写。Linux系统中USB结构如图2所示:
图2 USB系统结构图
在Linux内核中,设备驱动程序是一个个独立的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,设备驱动负责将这些调用映射到作用于实际硬件设备特有的操作上。在Linux系统中,设备驱动程序编译好后,有两种实现方法:一种是修改系统内核源码,把驱动静态编译进内核,使其成为内核的一部分;另一种则是编译成可以动态加载的模块,由管理员动态的加载。如果把驱动程序编译进内核,那么内核的大小会增加,内核的源文件也需要改变,并不能动态地释放,不利于系统的调试,所以在本系统中,为方便调试,把摄像头驱动程序编译成动态加载的模块。
1.2 视频采集
视频采集程序的流程如图3所示:
图3 视频采集流程图
USB摄像头驱动成功后,需要编写视频采集的程序,这就需要了解Linux内核中关于视频设备的部分代码Video For Linux(简称V4L)。它为应用程序提供了一系列的接口函数,通过这些函数,可以执行打开、读写、关闭等基本的操作。设备驱动提供了read、write、open、dose等函数的具体实现,在内核中这些函数都可以调用。
推荐文章
论坛热帖