吴晨光
(上海元路信息系统科技有限公司,上海 200030)
集中控制系统在摄像联动中的应用
吴晨光
(上海元路信息系统科技有限公司,上海 200030)
随着计算机技术的发展,集中控制系统在会议系统中的使用越来越普遍,现在已经成为会议系统中的标准配置。集中控制系统提供了强大且方便的编程平台,使得原本复杂的会议系统设备的管理与使用变得轻松而高效。本文将介绍集中控制系统如何实现对数字会议系统的管理和摄像联动控制。
数字会议系统 集中控制系统 摄像联动
随着数字化技术的发展,集中控制系统和数字会议及摄像联动系统已经成为现代化、智能化会议系统中不可缺少的系统之一,特别是在较大型的会议系统中显的尤为重要。
在数字会议诞生之前,要构建话筒数量达到上百支的系统是相当困难的,且使用和维护也极其复杂。有了数字会议系统不仅可以轻松构建几百支话筒的系统,就算几千支话筒的系统也可以轻松实现。数字会议系统除了可以用手拉手的方式轻松实现话筒的扩展、话筒及发言的管理,还可以实现投票表决、同声传译、摄像联动等功能。但是数字会议系统的摄像联动往往只能自成系统,必须选用指定的摄像机,只给实际使用带来了很大的麻烦。
在数字会议系统中最著名的,国内使用量也是最大的BOSCH就是这样。它要实现摄像联动必须使用BOSCH的矩阵、控制键盘、非高清的快速球机。而目前会议室中使用较多的是SONY的摄像机,且越来越多的用户开始使用高清的摄像机,因此利用CRESTRON集中控制系统作为桥梁来实现BOSCH数字会议室与SONY高清摄像机之间的摄像联动具有一定的实际意义。
LBB4187/00是BOSCH公司的一个开放式接口模块,通过此模块用户可以自行编程来控制和管理BOSCH的DCN数字会议系统,实现会议主机和会议话筒状态的实时显示与控制、表决以及摄像联动等功能;
LBB4187/00并不是一个硬件的设备,其实他只是一个软件的许可号。用户可以通过这个许可号以及要安装这个许可号的主机的序列号到BOSCH网站注册生成一个可激活开放式接口协议的新的许可号,再通过专用的软件激活该协议。
在集中控制主机与DCN会议系统主机之间的通讯是通过专用的数据包来实现,其具体的定义格式为:数据包头+消息+校验。
数据包头由3个字节组成,其具体的说明如下:
Escape:为Escape键,其值为0x1B;
表1
表2
Headertype:为数据包头的类型,其具体的取值与含意如下:
‘$’表示带有消息数据的包;
‘@’表示不带消息数据的ACK包;
‘#’表示不带消息数据的NAK包;
‘?”表示为heartbeat包;
Sequence:表示包的序号
消息是集中控制主机与DCN会议主机之间通讯的真正有效率数据。
消息类型与DCN会议主机之间通讯的消息类型有以下三类;
MDSM_REMOTEPROCEDURE_REQ
MDSM_REMOTEPROCEDURE_RSP
MDSM_NOTIFY
它们分别表示请求、响应、通告;
数据长度:表示紧跟其后要传输数据的长度;
数据:表示此条消息所包含的命令数据。
所有数据包都要以校验字节结束,为了保正数据头的唯一性增加了一个修正字节,其具体的计算过程如下:
(1)将修正字节的值设为0x00;(2)将数据包头、完整的消息以及修正字节相加;(3)将第二步计算的结果用256求余并按位取反;(4)检查第三步的结果是否等于0xC8,如果等于将修正字节改为0x13跳到第二步重新计算。
目前在会议室中使用最为广泛的摄像机为SONY的摄像机,其采用的通讯协议为SONY VISCA协议,目前也有很多其它品牌的摄像机兼容SONY VISCA协议。VISCA协议的通讯也是以数据包为其本的通讯单位。在数据包的第一个字节是包头,它包含了发送方或接收方的地址,中间为命令和数据,最后以0xFF结束。
SONY的会议用摄像机大多都是只有6个硬件预置位,而在实际应用中6个预置位是远远不够的,在一般的会议室中通常少的需要十几个,多的需要几十个甚至上百个预置位,因此需要采用软件的方法来实现。在VISCA协议中我们发现关于摄像机镜头远近的缩放以及上下左右位置的移动有直接位置指令,这为用软件实现预置位提供了必要的条件。
通常情况下摄像机的聚焦、光圈、白平衡等都是自动的,因此我们只要通过命令实现缩放和上下左右位置就可以实现预位的功能。以下我们以SONY EVI-HD1高清摄像机为例为介绍这两条指令。
在EVI-HD1的通讯协议中CAM_Zoom命令下能找到一个Direct指令,其格式如下:
0x8x 0x01 0x04 0x07 0x0p 0x0q 0x0r 0x0s 0xFF
在以上指令中0x8x为包头,0xFF为包的结尾,中间的为命令和数据。其中0x8x中的x为地址,其取范围为1~7,0x0p 0x0q 0x0r 0x0s中的“pqrs”组成在一起为16进制表示的一个2字节的数,即:0xpqrs。
在EVI-HD1的通讯协议中Pan-tiltDrive命令下能找到一个AbsolutePosition指令,其格式如下:
0x8x 0x01 0x06 0x02 0xVV 0xWW 0x0Y 0x0Y 0x0Y 0x0Y 0x0Z 0x0Z 0x0Z 0x0Z 0xFF
以上指令中包头与结尾与摄像机缩放指令是相同的,在数据中0xVV表示水平移动速度、0xWW表示垂直移动速度、0x0Y 0x0Y 0x0Y 0x0Y表示水平位置、0x0Z 0x0Z 0x0Z 0x0Z表示垂直位置。
针对于DCN主机和摄像机我们采用了两个SIMPL+模块来实现,两个模块之间能过一个模拟量为实现摄像联动的功能。由于篇幅的限制本文件只对两个模块的实现思路做简单介绍。
首先我们需要定义模块的输入和输出接口,主要的接口变量定义如表1:
对于数字量输入我们可以采用PUSH事件来完成对应事件的处理,对于字符串输入我们采用CHANGE事件,在CHANGE事件中对接收到的数据进行处理,并调用相应的命令处理函数完成状态的输出。
其中模拟量cam_Pos等于0时表示调用全景位,大于0的数表示相应的预置位。预置位的生成规则是:
(1)当有新的话筒打开时,当前的预置位号设为当前的话筒号;
(2)当有话筒关闭时,查找发言列表中是否有主席机,如有将当前的预置位设为主席机的话筒号;如无主席机,则将当前预置位设为发言列表中列在第一位的话筒号;
(3)如发言列表为空,个输出全景位。
在VISCA协议的实现中主要注意的是用于保存水平、垂直、放大缩小等预置位信息的数组要定义成SIGNED_LONG_INTEGER,并且在SIMPL+模块预定义中加入#DEFAULT_NONVOLATILE,这样预置位信息将会被保存在非易失性存储器中。其主要接口变量的定义如表2:
对于数字量输入我们采用PUSH事件完成对应的事件处理,对于预置位调用的模拟量我们采用CHANGE事件,在CHANGE事件中根据事先存储的预置位信息生成预置位命令,并输出给字符串输出变量。
集中控制系统在会议系统中的应用,使得现代化会议系统的管理和使用越来越方便、高效,整个会议系统的集成代程度越来越高。依托集中控制系统所提供的灵活的、高效的编程平台我们可以实现一些以前无法实现的功能,使我们的会议系统也越来越智能化。
[1]《DCN Next Generation Open Interface Release 2.1》,2005年09月.