基于Visual Basic快速开发现场电视监控系统
摘要: 本文介绍了一种用Visual Basic快速开发现场电视实时监控系统的方法,该方法简单方便、成本低廉,具有一定的实用价值。实时监控系统投入使用可有效地提高电视台或交通部门的工作效率。
关键词:VB电视监控系统ActiveX
随着电视监视器材、计算机技术的日益发展,图形监视系统在电视系统或监控场所得到了广泛地应用。用图形来实时显示被控对象(摄像机、终端设备等)在操作过程中的状态,具有清晰明了、形象直观且可以及时处理反馈信息。它比数字仪表包含的信息量大得多,因此使现场监控人员的工作方式得到了改进,效率也由此得到了很大的提高。
现场电视监控系统由实时控制系统、监视系统及管理信息系统组成。实时控制系统完成实时数据采集处理、存储、反馈的功能;监视系统完成对各个监控点的全天候的监视,能在多操作控制点上自动或手动切换多路图像,能遥控前端设备,能使摄像镜头自动对焦等;管理信息系统完成各类所需信息的采集、接收、传输、加工、处理,是整个系统的控制核心。
目前的图形实时监控软件通常用VC或VC++开发,它对软件开发人员要求很高,而且开发周期较长,开发难度也偏大。如果利用Visual Basic(VB)来开发有关的监控系统,就能较好地解决上述问题。
1设计思路与技术路线
由于Visual Basic在界面制作上的优越性,我们采用Visual Basic来进行系统的快速开发。本系统必须对硬件进行实时监视控制,从而实现监控功能。要利用VB来开发就必须先解决VB不能直接访问低层硬件的问题,也就是要提出用VB访问低层硬件的解决方案。我们为本系统确定了下列设计方案:让VB去调用DLL文件,再让DLL去调用VxD文件,通过VxD文件实现对低层硬件的实时控制,再通过写并行端口实现硬件电路的切换。这样,即克服了VB不能直接访问低层硬件缺点,又发挥了VB在界面和开发速度上的优点。本系统主控模块如图1所示。主控模块是监视中心的主界面,它分为手动模块、自动模块、退出模块三个子模块。手动子模块又分为键盘控制和鼠标控制,主要为了监控中心人员灵活的手动控制各个监控点;自动子模块又分为打开通道、增加一项、设置时间、更改名称、删除一项、关闭通道,主要为了监控中心人员方便的自动控制各个监控点,遥控远端设备。
图1系统结构图
2功能简介
(1)监控硬件是通过写计算机的并行端口来实现,VB通过调用DLL向并行端口写入8bit的定位信息,本系统采用四个通道并行监控控制点,各通道互不影响。由后端硬件电路根据这8bit的定位信息判断哪个端口的哪个摄像机(监控点)被选中,现场电视监控系统服务器接通被选中的摄像机所对应的门电路。同时在监控中心实时的反映出来。
(2)系统提供了手动控制和自动控制二种方式。
①自动控制:实现对各个摄像机(监控点)的循环监控。对正在监控摄像机(监控点)进行计时,达到此摄像机(监控点)预定时间时,去调用自动切换子程序完成切换功能,从而使系统按照监控中心人员预先设定的监控顺序自动循环切换。监控中心人员可选择监控的摄像机序列,在自动监控状态下加载后,可以动态的增加、删除摄像机,改变播出时间和顺序。
②手动控制:实现对各个摄像机(监控点)的手动监控。由于工作需要,有时需要固定在某个摄像机(监控点)长时间不间断地监控,本系统提供了手动控制很好的满足了这个需要。当系统处于手动状态时,监控中心人员可以通过主窗口的手动按钮,或使用键盘数字键选择哪个通道监控哪一台摄像机。选中后,该通道就固定监控此摄像机(监控点),直到手动选择另一个摄像机(监控点)时,才调用手动切换子程序完成切换功能。
(3)系统界面采用VB6.0中的Listview控件,此控件具有SmallIcon、LargeIcon、List、Report四种显示方式,从而达到用户界面友好的效果。图2是在Report显示方式下的监控中心主界面。
图2 现场电视监控系统
3.系统的实现
3.1VB访问低层硬件的实现
支持低层硬件访问的DLL文件和ActiveX控 件,通过它们可读写存储器单元、端口,甚至控制硬件中断。本系统利用DLL实现访问低层,详见图3所示。
图4低层硬件访问示意图
3.2系统中对播放序列存储的实现
由于本系统涉及的摄像机为16台,数量不算太多,可不采用数据库存储,而巧妙地选用随机文件(*.dat)的方式进行存储,可大大提高响应的速度。
表1随机文件格式表
3.3写并行端口的程序实现
ID域为16×4个摄像机各自唯一的编号,按编号控制门电路的接通与断开。
表2 8bit定位信息取值与通道对照表
表2中通道列中的A、B、C、D分别对应A、B、C、D四个通道,高位(HEX)列只要用二进制的低六位即可完成控制功能。编写函数WriteToPort向并口中写入8位的二进制数,部分关键源程序
Public Sub WriteToPort(Addr As String, ValPort As String) ‘ CW As CheckBox)
Dim Nomw As Integer, DatW As Integer
‘ If = Checked Then
‘Nomw = HexToInt()
Nomw = HexToInt(Addr)
DatW = HexToInt(ValPort)
‘ Write one byte to the port
Call SetPortByte(HW32, Nomw, DatW)
‘ End If
End Sub
4.结束语
本文介绍的现场电视实时监控系统由于采用了随机文件存储写并口的信息,巧妙地解决了VB对低层硬件读写的问题,大大提高了系统运行速度。本系统投入使用后,经过一段时间的运行测试和使用,证明其性能稳定、运行可靠、各项监测精度符合要求,并具有操作简单方便的特点。同时,这项技术可以大大缩短实时监控程序的开发周期,减少程序员的工作量,适用于电视台节目的实时监控和交通路口的实时监控。
1. Microsoft公司着,希望图书创造室译.Visual Basic6.0组件工具指南.北京:北京希望电子出版社,1999
2. Microsoft公司着,希望图书创造室译.Visual Basic6.0中文版程序员指南.北京:北京希望电子出版社,1998
上一篇:多种数制显示的汇编语言编程实现
下一篇:彩色图象的二维变形