用于视频监视的云台镜头系统串行通信的实现[*]
董延军 金蕾 司维 周恕义
(北京工业大学现代教育技术中心,zsy@bjut.edu.cn)
摘 要:本文介绍了如何运用VB6.0的通信控件Mscomm来实现云台镜头的串行通信,内容包括云台镜头系统介绍、设计原理和软件设计部分介绍等。
关键词:云台镜头 串行通信 视频 VB6.0 Mscomm控件
在实时监控、在线直播、公安、教育等许多领域都需要用到计算机控制云台动作及CCD摄像头的焦距、光圈。云台镜头控制系统是通过计算机串口/并口发送控制指令到解码器,再由解码器控制相应的继电器达到各个电源并关的闭合,从而实现摄像头在垂直方向的运动、水平方向的摆动以及电子镜头的聚焦、光圈和变倍。VisualBasic6.0是在Windows平台下开发串行通信程序的高效编程语言工具,一方面我们可以利用VB本身提供的ActiveX控件,另一方面可通过调用由C++开发的动态链接库(DLL)来控制硬件操作。本文将介绍利用VB6.0通信控件Mscomm来实现云台镜头控制系统的串行通信。
1 云台镜头控制系统介绍
图1 云台控制系统设备布局和连线示意图
云台、镜头控制系统由计算机、解码器、云台和CCD摄像头等组成。一台计算主机可通过解码器阵列控制多个云台,控制系统的布局和连线示意如图1所示。在本系统中,用户可以通过计算机串口发出控制指令,解码器解析指令,获知操作对象(具体哪个云台)、操作动作(俯仰、左右摆动等)后,通过继电器接通/断开相应的线路,从而使相应电机运转或停止。除此之外,云台一般还有自动开关控制。如果自动开关打开,云台可自动进行左右摆动,当一个方向摆动到尽头时,会触发一个限位行程开关而转向方向。关闭自动,则停止摆动。
2 设计原理
在云台镜头控制系统中,解码器起着核心的地位。设计云台镜头控制系统主要解决的问题是将各项操作进行编码,这样解码器收到指令后,才能够正确解析并控制继电器的断开闭合。解码器是用来与计算机进行通信的一种设备,它封装了底层硬件程序的编写,因此我们只需要利用解码器开发商提供的有关协议,通过RS232或者RS485串行接口对解码器发出指令即可[3]。
本系统中我们采用常用的RS-232串口进行控制。串行通信RS-232端口是计算机上的标准配置,主要是利用来和其它设备进行数据传输和接收。在云台镜头控制系统当中,一般只用到数据发送,也就是说只需要RS-232串口9芯中的TXD和GND两个针与解码器相连。
设计原理如图2所示:
VB程序 MSComm控件控空间 VB解析指令 串行端口 解码器接收指令 控制云台镜头动作
图2 云台镜头工作示意图
3 串行通信的实现
3.1 VB的Mscomm控件设置[1][2]
打开VB界面中project菜单下的Components,选择Microsoft Comm Control 6.0把Mscomm32.ocx控件调入工具框中即可使用。表1为与本系统有关的Mscomm控件属性描述。
表1 Mscomm属性
属性 |
名称 |
类型 |
说明 |
Comport |
串口号 |
Short |
设置并返回通信端口 |
PortOpen |
串口状态 |
BOOL |
设置并返回通信端口的状态,也可以打开和关闭端口 |
Settings |
参数设置 |
String |
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位 |
Output |
发送数据 |
Variant |
向发送缓冲区写入数据 |
图3控制端口的设置
根据解码器提供的通信协议,我们对Mscomm控件进行初始化,这里我们选用的是ADT 8060 解码器。下面为初始化的部分程序:
Mscomm1.commport=1 ‘选用com1
Mscomm1.settings=”4800,N,8,1” ‘波特率为4800,无奇偶校验,数据位为8,停止位为1
If Mscomm1.portopen=false then ‘打开端口
Mscomm1.portopen=true
End if
为了做成通用的云台镜头控制系统,一般对端口的设置要做成可进行改变参数的对话框。图3为可进行变更设置的通用对话框。
3.2 云台地址的选择[4]
解码器电路板上有个8位的拨码开关BM1,用来设置解码器的地址码和通信协议。地址码为低6位,可设置64个地址(0-63)。第N路(1≤N≤64)地址码为N-1,把N-1变换为二进制表示,按照拨码开关ON代表“1”,OFF代表“0”的原则,可设置任一路的地址码。例如:第16路,地址为16-1=15,15对应的二进制为01111。
3.3 数据编码
数据编码是串行通信当中的核心部分,下面结合ADT8060解码器通信协议来说明如何进行正确编码。
ADT8060解码器通信协议的说明如表2:(图中的数据为16进制)
表2 ADT8060解码器通信协议
功能说明 |
DATA1 |
DATA2 |
DATA3 |
DATA4 |
DATA5 |
UP |
40 |
43 |
ADDRES |
01 |
CH(和校验) |
DOWN |
40 |
43 |
ADDRES |
02 |
CH(和校验) |
LEFT |
40 |
43 |
ADDRES |
04 |
CH(和校验) |
RIGHT |
40 |
43 |
ADDRES |
08 |
CH(和校验) |
ZOOM IN |
40 |
43 |
ADDRES |
10 |
CH(和校验) |
ZOMM OUT |
40 |
43 |
ADDRES |
20 |
CH(和校验) |
STOP |
40 |
43 |
ADDRES |
70 |
CH(和校验) |
AUTO ON |
40 |
50 |
ADDRES |
23 |
CH(和校验) |
AUTO OFF |
40 |
50 |
ADDRES |
13 |
CH(和校验) |
在表1当中我们可以看到,在VB中Mscomm控件的属性Output类型属于Variant,所以我们可以通过Byte Array添加二进制数据,也可以通过String添中文本数据。据此,我们可以结合厂商提供的协议,灵活地开发程序。控制领域使用十六进制数非常普遍,而十进制数在生活当中更为常用,因此在现有的许多软件开发中大都进行了二者之间的转化。笔者在开发当中发现,直接利用协议给解码器发码,是非常直接和有效的手段,无需再进行十六进制和十进制之间的转化,也即无须用到VB中的Val和Hex(函数),或者另外编制程序。这部分程序的编制思路如下:
在模块当中我们先定义几个相关的公共数组变量,
Public ByteCodeAct(5) As Byte '状态控制指令集
Public curChoose As Integer '当前选中的云台
Public data1, data2, data3, data4, data5 As String ‘协议文本数据
在程序的指令当中,我们将这些协议文本数据赋给状态控制指令当中,
‘例如UP指令
data1=”40”
data2=”43”
data4=”01”
curChoose =2
ByteCodeAct(1) = "&H" + data1
ByteCodeAct(2) = "&H" + data2
ByteCodeAct(3) = curChoose
ByteCodeAct(4) = "&H" + data4
‘和校验
ByteCodeAct(5) = ByteCodeAct(1)+ ByteCodeAct(2) +ByteCodeAct(3) +ByteCodeAct(4)
MSComm1.Output = ByteCodeAct ‘发送指令
以上发送的数据当中,除了地址码外,其余的都是十六进制数,因此在其前面都要加"&H"。地址码一般都按十进制来称呼,比如1路,2路,所以直接用十进制数进行发送即可。
3.4系统界面的设计
通用的程序要求系统方便为用户所用,因此界面的设计要简明而且通用。这样,当程序连接新的解码器时,只需要在对话框中修改指令编码文件的数据即可,无需修改和重新编译系统程序了。图4,图5为系统操作及设置界面。
图4用户操作主界面
图5设置控制码对话框
4 结束语
本文对在windows环境下利用VB6.0开发云台镜头控制的串行通信系统的设计做了探讨和实践。由于通信控件的强大功能,编程简单,使得Windows环境下开发串口通信系统变得方便易行。本文只提供了一种编程的思路,但对于这类系统的串行通信来说具有普遍的意义。开发者可根据选用的解码器进行灵活的编程,比如一些解码器提供的协议,和校验有可能超出255即一个byte的最大容量,这就需要采取一些办法在编制软件时进行灵活处理。该技术已经用于北京工业大学流媒体教学直播系统的开发之中。
参考文献
【1】仵浩,Visual Basic串口通信工程开发实例导航:人民邮电出版社 2003.1
【2】张红兵等,微计算机信息,2002年第10期,67,68页
【3】洪志全等,现代计算机接口技术,2002.4
【4】ADT8060解码器产品说明书
Implementation of Serial Communication
for Platform-lens Video System
Abstract: This text is mainly concerned with how to use the Mscomm control of VB6.0 to realize serial communication of platform- lens, Including the introduction of platform- lens, the principle of design and the outline of software, etc.
Key words: platform- lens serial communication video frequency VB6.0 Mscomm
The Modern Technological Center in Education of Beijing University of Technology
Dong Yanjun Jin Lei Si Wei Zhou Shuyi
E_mail: zsy@bjut.edu.cn
作者简介:董延军(1972.10--),男,山西原平人,工程师,在读研究生,主要研究方向:网络与控制技术。
联系地址:北京工业大学现代教育技术中心 100022 67391460
Dong Yanjun Male 1972.10 Shan xin Engineer Graduate Student
Network and Control Technique
中图分类号:TP312BA
评论