APP下载

基于C/S模式的远程云台控制系统设计与实现

2014-09-18张梦娜于鸿洋

电视技术 2014年13期
关键词:云台服务器端命令

张梦娜,于鸿洋

(电子科技大学电子科学技术研究院,四川成都 611731)

近年来,社会不断进步,人们生活水平不断提高,人们对于隐私保护的观念逐渐增强,视频监控系统在教育、银行、交通、医疗等各行各业有着广泛的应用。而视频监控系统的核心就是云台控制[1]。传统的云台控制是通过手动摁下云台上相应的按钮而进行的,这对监控人员的地理位置有很大的限制,带来了许多不便之处,故通过网络远程控制云台逐渐成为视频监控的一种新趋势。网络控制云台由于受到网络本身的一些约束可能导致发送命令延时或错误。综合以上优劣,本文提出了一种基于C/S模式的远程云台控制系统的设计方案,对于其中的网络延时或者发送命令错误都有相应的处理。同时加入了客户端的权限控制,使得云台控制更加高效实用。

1 系统的总体设计

本系统设计的是一种基于客户端/服务器(C/S)模式的远程云台控制系统。监控设备采用的是云台摄像头一体机(内置解码器,支持协议为PELCO-D/P自适应)。服务器通过网络可以与多种平台(windows,linux,ios,andriod)的客户端交互,并可以通过权限的判定有选择性地让权限高的客户端拥有云台控制的优先权。客户端首先通过SOCKET通信与服务器建立连接,再根据自定义的协议向服务器发送云台控制命令。当客户端连接上服务器之后,服务器首先判定此客户端是否具有控制权限。若有则将客户端命令转化为相应的云台控制命令,再通过串口向云台发送指令;若无则断开连接。发送的指令通过一体机内的内置解码器解释最终控制云台全方位转动以及聚焦缩放。云台控制系统框图[2]如图1所示。

图1 云台控制系统框图

2 云台的控制设计

2.1 球机的拨码开关设置

取下球机外罩,可以看到内置解码器电路板上有两组拨码开关。其中一组有4位,前两位是控制协议开关,后两位是波特率开关。另外一组有8位,是地址拨码开关。拨码开关拨到“ON”表示“1”,拨到“OFF”表示“0”。由于本系统采用PELCO-D协议,波特率为2 400 Baud,故根据产品说明书将第一组拨码开关设置为0000,第二组拨码开关设置为00000001(即地址为16进制01H)。

2.2 PELCO-D 协议的数据编码[3-6]

数据格式包括1位起始位、8位数据、1位停止位,无效验位。波特率为2 400 Baud。命令格式如图2所示。

图2 命令格式

该协议中所有数值都为十六进制数;同步字节始终为FFH;地址码为摄像机的逻辑地址号,地址范围00H~FFH,可以在设备中设置;指令码表示不同的动作;数据码1,2分别表示水平、垂直方向速度(00~3FH),FFH表示“turbo”速度;校验码 =MOD[(Byte2+Byte3+Byte4+Byte5+Byte6)/100H]。

命令字1和命令字2设置如表1所示。

表1 命令字设置

例如,欲控制云台向左旋转,可发送一串16进制码FF010004FF0004。

2.3 云台控制基本代码框架

首先打开串口,串口对应的设备文件名为“/dev/ttyS0”,参数O_RDWR表示可读可写,即

然后设置串口属性,SetSpeed函数设置波特率为2 400 Baud,SetParity函数设置数据格式为8位数据,1位停止位,无校验位,即

接下来输入命令码,保存在字符串strCommOut中,即CheckSum函数用来计算校验码。

最后向串口发送命令,即

3 客户端与服务器端的交互设计

3.1 客户端与服务器的交互协议

为了方便交互,自定义了一组5位的0/1字符串作为客户端发送的命令。0/1字符串是一种非常简单的组合,而固定长度的字符串在网络通信中能够通过一定的机制保证收发完整。因为read()和write()函数每一次接收和发送数据长度不能确定。故在本系统的设计中,通过函数recv()和send()来收发数据。设置两个函数的最大接收字节数和最大发送字节数MAXSIZE为5,并且将函数的第4个参数设置为MSG_WAITALL,这样可以保证每次接收和发送的数据长度到达5时才返回,由此收发的数据长度得到了保证。而收发的数据内容正确与否则采用错误重传机制,即如果客户端发送的命令不在自定义的协议范围内,则服务器端返回消息告知客户端命令发送不正确,请重新发送命令。

而在服务器端为了便于识别其含义,宏定义一组字母字符串来代表0/1字符串(如:#define ACTION_BEGIN“11111”),以增加程序的可读性。表2所示为具体的交互协议。

表2 客户端与服务器交互协议

3.2 客户端与服务器的交互流程

客户端与服务器的交互具体分为三大模块:SOCKET通信模块、身份验证模块和命令处理模块。

3.2.1 SOCKET通信模块

通信流程分为客户端和服务器端,使用TCP协议进行通信。首先是服务器端建立套接字socket(),绑定地址和端口bind(),然后监听端口listen(),阻塞直到有客户端连接。客户端也要建立套接字socket(),然后主动发起连接connect(),服务器端则接受连接accept()。最后客户端和服务器端经过TCP的“3次握手”建立连接,此时就可以相互通信发送和接收数据了。如果某一方调用close()主动关闭连接,则接下来会经历TCP的“4次握手”释放连接。

3.2.2 身份验证模块

首先服务器端不断地接受不同客户端的连接请求并将它们置于连接队列,然后再进行身份验证。此前需要预先进行权限等级的设置,本系统的设计中用户PRIOR具有最高权限(唯一),其他注册用户具有相同的权限。定义一个标志位flag,当flag为2时表明此时最高权限的用户在控制云台,当flag为1时表明此时一般权限的用户在控制云台,当flag为0时表明没有用户在控制云台。flag的初始值置为0。当服务器端与客户端建立了连接之后,首先读取客户端的信息(用户名和密码),然后在数据库中查询有无此用户。若无,则向此客户端发送信息“You have no permission and can not control!”并断开连接;若是一般用户,如果此时flag为0则直接给予控制权限并将flag置1,如果flag不为0则主动断开连接;若是PRIOR用户,如果此时flag为0则直接给予控制权限并将flag置2,如果flag为1则剥夺正在控制云台的用户的权限,强制断开连接,将控制权限交给PRIOR用户,并将flag置2。身份验证流程如图3所示。

3.2.3 命令处理模块

如果当前客户端得到控制云台的权限,则通过与服务器事先协商好的交互协议向服务器发送命令。若服务给予了用户控制权限后,则创建一个子进程fork()来处理控制命令,将客户端的命令转化为对应的云台控制命令,再向串口写命令,从而控制云台全方位转动。在控制过程中,开始时客户端必须要向服务发送控制码11111(宏定义ACTION_BEGIN,表明开始控制云台),控制结束后客户端必须要向服务器发送控制码00000(宏定义ACTION_END,表明结束控制云台)。此模块中同时设定了超时机制,若超过5 min客户端未向服务器端发送任何命令,服务器端就强制断开连接。命令处理流程如图4所示。

图3 身份验证流程

图4 命令处理流程

4 系统测试

本系统设计的是一种基于客户端/服务器(C/S)模式的远程云台控制系统。监控设备选择的是保千里迷你红外高速球(云台和摄像头一体机,内置解码器[7-8],支持协议为PELCO-D/P自适应,10倍光学变焦,可设置预置点,带红外夜视功能)。服务器配置fedora14操作系统,客户端是基于ios平台开发的。服务器端连接RS-232规格的串口线,中间通过RS-232/RS-485转换器连接到云台RS-485规格的串口线上。服务器与客户端通过网络进行通信。

图5所示为云台控制演示系统。其中左边为客户端设计的云台控制界面(ios手机版)。右上方为服务器端控制界面,当与客户端连接之后,会显示客户端的IP地址,然后显示开始控制消息,接着打印客户端发送的控制指令,最后显示结束控制消息。右下方为客户端的反馈界面,开始和结束控制都会收到服务器端发送的相应的提示消息。图6为客户端控制云台的几个监控画面。其中包括了原监控画面、视频放大画面、视频缩小画面、菜单栏画面、云台下转画面、云台上转画面、系统重启画面、云台右转画面、云台左转画面。

图5 云台控制演示系统(截图)

图6 监控画面(截图)

经过多次测试,本系统运行稳定可靠,能够精确控制云台全方位转动、聚焦和缩放。同时还可以进入菜单栏调整各项参数,功能全面,操作简单,方便实用。

5 系统应用

本文介绍的云台控制系统主要应用于视频监控系统中,基于教研室自拟项目“基于智能视音频的LED大屏控制与远程监视”,致力于开发一套完备的集人脸、手势识别、视频监控、云台远程控制为一体的解决方案。其中,云台控制不仅可供客户端进行远程控制,还可与人脸识别系统配合,通过人脸定位调整云台的方向并进行适当放大,以达到更好的识别效果。目前,苹果客户端的云台控制APP已在苹果应用商店上架。

如今,市场上商用的云台控制系统都集成于视频采集卡中,主要用于PC端,为了追求系统的稳定,支持的操作系统一般是Windows XP系统。而如今随着智能手机的普遍应用,特别是安卓系统和苹果系统得到广大用户的喜爱与推广,手机软件的开发应用将掀起一股新的互联网IT革命热潮,民用的云台控制系统更具潜力,具有布局范围广、控制方便、操作人性化、开放互动等优点。

6 结束语

本文主要介绍了一种新的基于客户端/服务器(C/S)模式的远程云台控制系统。云台与客户端通过串口通信进行控制,客户端与服务器通过网络通信交互。本系统还加入了客户端身份验证模块,给与客户群不同的权限,使云台控制变得更加有效而准确。系统测试表明,客户端能够准确控制云台全方位转动并且还实现了聚焦、放缩、扫描,转到预置位,进入菜单等多种功能。此云台控制系统具有较好的应用价值和市场前景。

:

[1]尚青青,朱秀昌.高清视频监控中心的设计与实现[J].电视技术,2013,37(11):186-187.

[2]王钢,李博,魏民,等.带有云台信息反馈的视频监控系统软件的开发设计[J].安防科技,2008(12):29-32.

[3]吴力普,王文白.一种智能云台控制操作键盘设计[J].北方工业大学学报,2011,23(3):46-50.

[4]吴力普,吴涛,张月魁.一种带反馈应答功能的云台镜头控制器设计[J].安防科技,2011(3):18-20.

[5]杨轶龙,徐驰,翁丽娜,等.基于闭环控制的云台通信协议设计[J].安防科技,2011(11):18-20.

[6]权立伟,石江宏,薛财锋.IP视频监控系统中云台控制模块的设计与实现[J].电子技术应用,2006(11):86-88.

[7]雷伟军,朱曦,刘长明.基于Visual C++云台控制系统关键技术与算法[J].西安文理学院学报:自然科学版,2008,11(3):76-79.

[8]戴钧,戴国骏.闭路监视系统中云台镜头控制的原理及实现[J].杭州电子工业学院学报,2001,21(1):59-62.

猜你喜欢

云台服务器端命令
云上之家——万科·郡西云台
龙门山·卧云台
只听主人的命令
帮我买云台
Linux环境下基于Socket的数据传输软件设计
基于STM32的无线FPV云台设计
移防命令下达后
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
这是人民的命令