基于大华软件开发工具包的组态软件视频监控控件*

2017-08-11 11:41孙云云
上海电气技术 2017年2期
关键词:大华云台控件

孙云云

上海电气集团股份有限公司 中央研究院 上海 200070



基于大华软件开发工具包的组态软件视频监控控件*

孙云云

上海电气集团股份有限公司 中央研究院 上海 200070

视频监控用于重要场所的安全防护,组态软件作为数据采集与过程控制的专用软件,整合视频监控功能很有必要。介绍了使用C#语言调用大华软件开发工具包开发可嵌入NetControl组态软件的控件,以实现网络摄像机的视频预览、录像存储、截图、云台控制等功能,同时实现与组态软件中其它子系统的数据交互。

软件开发工具包; 视频监控; 组态软件

组态软件是处于自动控制系统监控层一级的软件平台和开发环境,可为用户实现快速构建工业自动控制系统的监控功能[1]。针对国内中小型企业面临的生产需求,上海电气集团结合国内组态软件的发展情况,开发出NetControl通用数据采集和监控软件,用于机械制造、化工、电力等涉及自动化的领域[2]。

伴随计算机网络、多媒体技术的发展,视频监控得到了快速发展。随着人们安全意识的提高,视频监控广泛应用于各种行业。视频监控由于具备内容直观丰富、操作简单等优点,近年来在工业自动化领域中也开始广泛运用[3-4]。组态软件作为自动化领域中数据采集和过程控制的专用软件,整合视频监控功能十分有必要[5]。

笔者主要介绍基于大华软件开发工具包(SDK)的NetControl组态软件视频监控控件,可以为组态软件添加大华视频监控功能,进而实现视频监控信息采集与设备控制,同时实现与组态软件其它子系统的实时数据交互。

1 SDK简介

SDK一般是软件工程师为特定软件包、软件框架、硬件平台、操作系统等建立的应用软件开发工具[6]。大华设备网络SDK是基于设备私有网络通信协议而开发的套件,为网络硬盘录像机、网络视频服务器、网络摄像机、网络球机、智能设备等产品服务,主要包括业务操作和设备管理两大部分,具有实时监控、录像回放与下载、云台控制、远程升级等功能[7]。

2 SDK的使用

2.1 调用外部声明

在C#语言中声明.dll文件中的外部方法,其基本形式是:

[DllImport(“.dll文件”)]

修饰符extern返回变量类型 方法名称 (参数列表)

例如:

using System.Runtime.InteropServices;

[DllImport(@".DHdhnetsdk.dll")]

public static extern bool CLIENT_Init(fDisConnect cbDisConnect, UInt64 dwUser);

由于是非托管.dll文件,无法在公共语言运行库(CLR)中直接调用,因此在声明的方法名前需要使用[DllImport(@".DHdhnetsdk.dll")]声明.dll文件及其所在路径。需要注意的是,在程序声明中需要使用System.Runtime.InteropServices命名空间,DllImport只能放置在方法声明上[8]。由于控件需要嵌入组态软件中使用,因此.dll文件必须位于组态软件安装目录下。返回变量类型、方法名称、参数列表要与.dll文件中的定义相一致。

2.2 重写结构体

例如:

[StructLayoutAttribute(LayoutKind.Sequential)]

public struct NET_PARAM

{

int nWaittime;

//等待超时时间,单位为ms,若为0,则默认为5000ms

int nConnectTime;

//连接超时时间,单位为ms,若为0,则默认为1500ms

int nConnectTryNum;

//连接尝试次数,若为0,则默认为1次

int nSubConnectSpaceTime;

//子连接之间的等待时间,单位为ms,若为0,则默认为10ms

int nGetDevInfoTime;

//获取设备信息超时时间,单位为ms,若为0,则默认为1000ms

int nConnectBufSize;

//每个连接接收数据的缓存大小,单位为Byte,若为0,则默认为250×1024Byte

int nGetConnInfoTime;

//获取子连接信息超时时间,单位为ms,若为0,则默认为1000ms

int nSearchRecordTime;

//按时间查询录像文件的超时时间,单位为ms,若为0,则默认为3000ms

int nsubDisconnetTime;

//检测子连接断线等待时间,单位为ms,若为0,则默认为60000ms

byte byNetType;

//网络类型,0为局域网,1为广域网

byte byPlaybackBufSize;

//回放数据接收的缓存大小,单位为Byte,若为0,则默认为4MByte

[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=2, ArraySubType=UnmanagedType.I1)]

byte[] byReserved1;

//保留字段

int nPicBufSize;

//实时图片接收的缓存大小,单位为Byte,若为0,则默认为1024×1024 Byte

[MarshalAsAttribute(UnmanagedType.ByValArray,SizeConst=4, ArraySubType=UnmanagedType.I1)]

byte[] bReserved;

//保留字段

}

2.3 参数数据类型转换

表1 C++与C#中数据类型对照

3 控件开发

3.1 SDK开发

根据控制要求,视频监控控件功能主要包括进程间通信监视预览、云台控制、回放、下载、截图、录像等,主要流程如图1所示。控件按功能可分为不同模块,实现每个功能前需要初始化SDK,用户注册至设备,操作结束后注销设备,释放SDK。

图1 控制流程图

初始化SDK完成对整个网络SDK系统的初始化、内存预分配等操作。

用户注册至设备实现用户的注册功能,注册成功后,返回的登录标志码(ID)作为其它功能操作的唯一标识。对设备而言,普通数字录像设备最多同时允许10个用户注册,网络硬盘录像设备最多同时允许20个用户注册,超级硬盘录像设备不做限制。

功能调用结束后,或设备主动注销时调用注销用户。

程序关闭时调用释放SDK资源,完成内存分配资源的回收。

监视预览模块主要包括从前端服务器取实时码流、解码显示及播放控制等功能。用户注册至设备成功后,在CLIENT_RealPlayEx接口中播放有效句柄的窗口句柄,由SDK实现解码功能,进而实现实时视频流调取播放。

云台控制模块使用CLIENT_DHPTZControl接口,实现对云台的基本操作,以及预置点、巡航、轨迹和三维定位控制。按照SDK中规定的参数形式,指定不同的云台控制方向,通过用户登陆ID号即可进行云台控制。

回放下载模块可按照文件或时间回放下载录像。按文件回放或下载需要先查找录像文件接口获取文件信息(CLIENT_FindFile、CLIENT_FindClose接口),然后根据获取的文件名开始回放或下载(CLIENT_PlayBackByRecordFile、CLIENT_DownloadByRecordFile接口)。按时间回放或下载文件时,用户不需要调用查找录像文件的相关接口,只要在接口中指定开始和结束时间,调用CLIENT_PlayBackByTime、CLIENT_DownloadByTime接口即可,此时,将按指定时间范围内最近的有录像时间段开始回放或下载。

视频处理模块主要包括对视频截图(CLIENT_CapturePicture接口)、通过鼠标滚轮实现放大缩小(CLIENT_DHPTZControl接口)等操作。

3.2 与组态软件的数据交互

为实现与NetControl组态软件的数据交互,方便其它子系统对视频信息的控制与操作,开发了面向底层的服务方法。在代码中封装切换摄像头、截图、云台控制方法,在方法体前添加[ServiceMethod]注释,如:

[ServiceMethod]

public bool SwitchCam(string IPAddress, ushort PortNumber)

这样,在组态软件的脚本程序中可以调用该服务方法,如图2所示。

图2 NetControl脚本程序中服务方法调用

3.3 控件使用

视频监控控件成功安装后将在组态软件工具箱中显示,如图3所示。NetControl运行时控件界面如图4所示。

图3 视频监控控件在NetControl中的显示

4 结束语

笔者主要介绍了通过控件形式在NetControl组态软件中添加大华视频监控的功能,解决了NetControl中无法利用大华视频设备进行监控的问题,同时介绍了如何实现控件与组态软件的数据交互,便于实现工程中各子系统联动。文中介绍的控件仍存在改善和提高的空间,需要在后期工程中不断进行功能完善。

图4 NetControl组态软件视频监控控件界面

[1] 施祖铭.智能电网发展现状[J].装备机械,2010(3): 2- 12.

[2] 张勇旭,康盛,阚文勇.一种新型组态软件的功能分析及应用实例[J].仪表技术,2009(11): 26-28.

[3] 信师国,刘庆磊,刘全宾.网络视频监控系统现状和发展趋势[J].信息技术与信息化,2010(1): 23-25.

[4] 王靖,庞立.数模结合视频监控系统在轨道交通中的应用[J].上海电气技术,2010,3(2): 10-16.

[5] 杨湛莹.基于工控组态技术的隧道综合监控系统的实现[J].上海电气技术,2011,4(4): 5-10.

[6] 陈俊良,葛俊锋,叶林,等.基于海康威视SDK的视频监控软件的开发[J].工业控制计算机,2015,28(7): 97-98,101.

[7] 浙江大华技术股份有限公司.设备网络SDK(NetSDK)_Win64[EB/OL].http: //download.dahuatech.com/sdk_det.php?cid=1094&id=220.

[8] 牛军龙.动力电池测试平台软件控制系统设计[D].北京: 北京交通大学,2014.

[9] 黄双玲.面向C/C++程序函数调用关系的静态分析方法研究[D].合肥: 中国科学技术大学,2015.

[10] 刘建峰..NET环境下软件组件之间的互操作方法研究[D].南京: 南京理工大学,2007.

(编辑: 尔 东)

Video surveillance is used for safety protection of important places. Configuration software as special software for data acquisition and process control, has the necessity to integrate video surveillance function. Introduced the use of C# language to call Dahua SDK for development of embedded NetControl configuration software controls to achieve the functions of network camera including video preview, video storage, screenshots and PTZ control while realizing data interaction with other subsystems in the configuration software.

SDK; Video Surveillance; Configuration Software

2016年12月

孙云云(1990— ),女,硕士,助理工程师,主要从事工业软件研发工作, E-mail: sunyy5@shanghai-electric.com

TM925.7

B

1674-540X(2017)02-009-04

*上海市科学技术委员会企业合作专项(编号: 15dz1180400)

猜你喜欢
大华云台控件
云上之家——万科·郡西云台
龙门山·卧云台
买车
帮我买云台
幸福开走了
基于STM32的无线FPV云台设计
关于.net控件数组的探讨
构建生态格局 静待大华荣耀绽放
王大华书画作品
ASP.NET服务器端验证控件的使用