正文

用于视频监视的云台镜头系统串行通信的实现2005-09-30 13:26:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5473.html

分享到:

用于视频监视的云台镜头系统串行通信的实现[*]

董延军 金蕾 司维 周恕义

(北京工业大学现代教育技术中心,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芯中的TXDGND两个针与解码器相连。

设计原理如图2所示:

 

VB程序

MSComm控件控空间

VB解析指令

串行端口

解码器接收指令

控制云台镜头动作

 

 

 

 

 

 

 

 


 

2 云台镜头工作示意图

3 串行通信的实现

 

3.1 VBMscomm控件设置[1][2]

打开VB界面中project菜单下的Components,选择Microsoft  Comm Control 6.0Mscomm32.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个地址(063)。第N路(1N64)地址码为N1,把N1变换为二进制表示,按照拨码开关ON代表“1”,OFF代表“0”的原则,可设置任一路的地址码。例如:第16路,地址为1611515对应的二进制为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当中我们可以看到,在VBMscomm控件的属性Output类型属于Variant,所以我们可以通过Byte Array添加二进制数据,也可以通过String添中文本数据。据此,我们可以结合厂商提供的协议,灵活地开发程序。控制领域使用十六进制数非常普遍,而十进制数在生活当中更为常用,因此在现有的许多软件开发中大都进行了二者之间的转化。笔者在开发当中发现,直接利用协议给解码器发码,是非常直接和有效的手段,无需再进行十六进制和十进制之间的转化,也即无须用到VB中的ValHex(函数),或者另外编制程序。这部分程序的编制思路如下:

   在模块当中我们先定义几个相关的公共数组变量,

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

4ADT8060解码器产品说明书

 

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

 

 


 

[*] 本文得到北京市211项目建设资金资助

阅读(4373) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册