孫云云
上海電氣集團(tuán)股份有限公司 中央研究院 上海 200070
?
基于大華軟件開發(fā)工具包的組態(tài)軟件視頻監(jiān)控控件*
孫云云
上海電氣集團(tuán)股份有限公司 中央研究院 上海 200070
視頻監(jiān)控用于重要場所的安全防護(hù),組態(tài)軟件作為數(shù)據(jù)采集與過程控制的專用軟件,整合視頻監(jiān)控功能很有必要。介紹了使用C#語言調(diào)用大華軟件開發(fā)工具包開發(fā)可嵌入NetControl組態(tài)軟件的控件,以實現(xiàn)網(wǎng)絡(luò)攝像機(jī)的視頻預(yù)覽、錄像存儲、截圖、云臺控制等功能,同時實現(xiàn)與組態(tài)軟件中其它子系統(tǒng)的數(shù)據(jù)交互。
軟件開發(fā)工具包; 視頻監(jiān)控; 組態(tài)軟件
組態(tài)軟件是處于自動控制系統(tǒng)監(jiān)控層一級的軟件平臺和開發(fā)環(huán)境,可為用戶實現(xiàn)快速構(gòu)建工業(yè)自動控制系統(tǒng)的監(jiān)控功能[1]。針對國內(nèi)中小型企業(yè)面臨的生產(chǎn)需求,上海電氣集團(tuán)結(jié)合國內(nèi)組態(tài)軟件的發(fā)展情況,開發(fā)出NetControl通用數(shù)據(jù)采集和監(jiān)控軟件,用于機(jī)械制造、化工、電力等涉及自動化的領(lǐng)域[2]。
伴隨計算機(jī)網(wǎng)絡(luò)、多媒體技術(shù)的發(fā)展,視頻監(jiān)控得到了快速發(fā)展。隨著人們安全意識的提高,視頻監(jiān)控廣泛應(yīng)用于各種行業(yè)。視頻監(jiān)控由于具備內(nèi)容直觀豐富、操作簡單等優(yōu)點,近年來在工業(yè)自動化領(lǐng)域中也開始廣泛運用[3-4]。組態(tài)軟件作為自動化領(lǐng)域中數(shù)據(jù)采集和過程控制的專用軟件,整合視頻監(jiān)控功能十分有必要[5]。
筆者主要介紹基于大華軟件開發(fā)工具包(SDK)的NetControl組態(tài)軟件視頻監(jiān)控控件,可以為組態(tài)軟件添加大華視頻監(jiān)控功能,進(jìn)而實現(xiàn)視頻監(jiān)控信息采集與設(shè)備控制,同時實現(xiàn)與組態(tài)軟件其它子系統(tǒng)的實時數(shù)據(jù)交互。
SDK一般是軟件工程師為特定軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立的應(yīng)用軟件開發(fā)工具[6]。大華設(shè)備網(wǎng)絡(luò)SDK是基于設(shè)備私有網(wǎng)絡(luò)通信協(xié)議而開發(fā)的套件,為網(wǎng)絡(luò)硬盤錄像機(jī)、網(wǎng)絡(luò)視頻服務(wù)器、網(wǎng)絡(luò)攝像機(jī)、網(wǎng)絡(luò)球機(jī)、智能設(shè)備等產(chǎn)品服務(wù),主要包括業(yè)務(wù)操作和設(shè)備管理兩大部分,具有實時監(jiān)控、錄像回放與下載、云臺控制、遠(yuǎn)程升級等功能[7]。
2.1 調(diào)用外部聲明
在C#語言中聲明.dll文件中的外部方法,其基本形式是:
[DllImport(“.dll文件”)]
修飾符extern返回變量類型 方法名稱 (參數(shù)列表)
例如:
using System.Runtime.InteropServices;
[DllImport(@".DHdhnetsdk.dll")]
public static extern bool CLIENT_Init(fDisConnect cbDisConnect, UInt64 dwUser);
由于是非托管.dll文件,無法在公共語言運行庫(CLR)中直接調(diào)用,因此在聲明的方法名前需要使用[DllImport(@".DHdhnetsdk.dll")]聲明.dll文件及其所在路徑。需要注意的是,在程序聲明中需要使用System.Runtime.InteropServices命名空間,DllImport只能放置在方法聲明上[8]。由于控件需要嵌入組態(tài)軟件中使用,因此.dll文件必須位于組態(tài)軟件安裝目錄下。返回變量類型、方法名稱、參數(shù)列表要與.dll文件中的定義相一致。
2.2 重寫結(jié)構(gòu)體
例如:
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_PARAM
{
int nWaittime;
//等待超時時間,單位為ms,若為0,則默認(rèn)為5000ms
int nConnectTime;
//連接超時時間,單位為ms,若為0,則默認(rèn)為1500ms
int nConnectTryNum;
//連接嘗試次數(shù),若為0,則默認(rèn)為1次
int nSubConnectSpaceTime;
//子連接之間的等待時間,單位為ms,若為0,則默認(rèn)為10ms
int nGetDevInfoTime;
//獲取設(shè)備信息超時時間,單位為ms,若為0,則默認(rèn)為1000ms
int nConnectBufSize;
//每個連接接收數(shù)據(jù)的緩存大小,單位為Byte,若為0,則默認(rèn)為250×1024Byte
int nGetConnInfoTime;
//獲取子連接信息超時時間,單位為ms,若為0,則默認(rèn)為1000ms
int nSearchRecordTime;
//按時間查詢錄像文件的超時時間,單位為ms,若為0,則默認(rèn)為3000ms
int nsubDisconnetTime;
//檢測子連接斷線等待時間,單位為ms,若為0,則默認(rèn)為60000ms
byte byNetType;
//網(wǎng)絡(luò)類型,0為局域網(wǎng),1為廣域網(wǎng)
byte byPlaybackBufSize;
//回放數(shù)據(jù)接收的緩存大小,單位為Byte,若為0,則默認(rèn)為4MByte
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst=2, ArraySubType=UnmanagedType.I1)]
byte[] byReserved1;
//保留字段
int nPicBufSize;
//實時圖片接收的緩存大小,單位為Byte,若為0,則默認(rèn)為1024×1024 Byte
[MarshalAsAttribute(UnmanagedType.ByValArray,SizeConst=4, ArraySubType=UnmanagedType.I1)]
byte[] bReserved;
//保留字段
}
2.3 參數(shù)數(shù)據(jù)類型轉(zhuǎn)換
表1 C++與C#中數(shù)據(jù)類型對照
3.1 SDK開發(fā)
根據(jù)控制要求,視頻監(jiān)控控件功能主要包括進(jìn)程間通信監(jiān)視預(yù)覽、云臺控制、回放、下載、截圖、錄像等,主要流程如圖1所示??丶垂δ芸煞譃椴煌K,實現(xiàn)每個功能前需要初始化SDK,用戶注冊至設(shè)備,操作結(jié)束后注銷設(shè)備,釋放SDK。
圖1 控制流程圖
初始化SDK完成對整個網(wǎng)絡(luò)SDK系統(tǒng)的初始化、內(nèi)存預(yù)分配等操作。
用戶注冊至設(shè)備實現(xiàn)用戶的注冊功能,注冊成功后,返回的登錄標(biāo)志碼(ID)作為其它功能操作的唯一標(biāo)識。對設(shè)備而言,普通數(shù)字錄像設(shè)備最多同時允許10個用戶注冊,網(wǎng)絡(luò)硬盤錄像設(shè)備最多同時允許20個用戶注冊,超級硬盤錄像設(shè)備不做限制。
功能調(diào)用結(jié)束后,或設(shè)備主動注銷時調(diào)用注銷用戶。
程序關(guān)閉時調(diào)用釋放SDK資源,完成內(nèi)存分配資源的回收。
監(jiān)視預(yù)覽模塊主要包括從前端服務(wù)器取實時碼流、解碼顯示及播放控制等功能。用戶注冊至設(shè)備成功后,在CLIENT_RealPlayEx接口中播放有效句柄的窗口句柄,由SDK實現(xiàn)解碼功能,進(jìn)而實現(xiàn)實時視頻流調(diào)取播放。
云臺控制模塊使用CLIENT_DHPTZControl接口,實現(xiàn)對云臺的基本操作,以及預(yù)置點、巡航、軌跡和三維定位控制。按照SDK中規(guī)定的參數(shù)形式,指定不同的云臺控制方向,通過用戶登陸ID號即可進(jìn)行云臺控制。
回放下載模塊可按照文件或時間回放下載錄像。按文件回放或下載需要先查找錄像文件接口獲取文件信息(CLIENT_FindFile、CLIENT_FindClose接口),然后根據(jù)獲取的文件名開始回放或下載(CLIENT_PlayBackByRecordFile、CLIENT_DownloadByRecordFile接口)。按時間回放或下載文件時,用戶不需要調(diào)用查找錄像文件的相關(guān)接口,只要在接口中指定開始和結(jié)束時間,調(diào)用CLIENT_PlayBackByTime、CLIENT_DownloadByTime接口即可,此時,將按指定時間范圍內(nèi)最近的有錄像時間段開始回放或下載。
視頻處理模塊主要包括對視頻截圖(CLIENT_CapturePicture接口)、通過鼠標(biāo)滾輪實現(xiàn)放大縮小(CLIENT_DHPTZControl接口)等操作。
3.2 與組態(tài)軟件的數(shù)據(jù)交互
為實現(xiàn)與NetControl組態(tài)軟件的數(shù)據(jù)交互,方便其它子系統(tǒng)對視頻信息的控制與操作,開發(fā)了面向底層的服務(wù)方法。在代碼中封裝切換攝像頭、截圖、云臺控制方法,在方法體前添加[ServiceMethod]注釋,如:
[ServiceMethod]
public bool SwitchCam(string IPAddress, ushort PortNumber)
這樣,在組態(tài)軟件的腳本程序中可以調(diào)用該服務(wù)方法,如圖2所示。
圖2 NetControl腳本程序中服務(wù)方法調(diào)用
3.3 控件使用
視頻監(jiān)控控件成功安裝后將在組態(tài)軟件工具箱中顯示,如圖3所示。NetControl運行時控件界面如圖4所示。
圖3 視頻監(jiān)控控件在NetControl中的顯示
筆者主要介紹了通過控件形式在NetControl組態(tài)軟件中添加大華視頻監(jiān)控的功能,解決了NetControl中無法利用大華視頻設(shè)備進(jìn)行監(jiān)控的問題,同時介紹了如何實現(xiàn)控件與組態(tài)軟件的數(shù)據(jù)交互,便于實現(xiàn)工程中各子系統(tǒng)聯(lián)動。文中介紹的控件仍存在改善和提高的空間,需要在后期工程中不斷進(jìn)行功能完善。
圖4 NetControl組態(tài)軟件視頻監(jiān)控控件界面
[1] 施祖銘.智能電網(wǎng)發(fā)展現(xiàn)狀[J].裝備機(jī)械,2010(3): 2- 12.
[2] 張勇旭,康盛,闞文勇.一種新型組態(tài)軟件的功能分析及應(yīng)用實例[J].儀表技術(shù),2009(11): 26-28.
[3] 信師國,劉慶磊,劉全賓.網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)現(xiàn)狀和發(fā)展趨勢[J].信息技術(shù)與信息化,2010(1): 23-25.
[4] 王靖,龐立.數(shù)模結(jié)合視頻監(jiān)控系統(tǒng)在軌道交通中的應(yīng)用[J].上海電氣技術(shù),2010,3(2): 10-16.
[5] 楊湛瑩.基于工控組態(tài)技術(shù)的隧道綜合監(jiān)控系統(tǒng)的實現(xiàn)[J].上海電氣技術(shù),2011,4(4): 5-10.
[6] 陳俊良,葛俊鋒,葉林,等.基于海康威視SDK的視頻監(jiān)控軟件的開發(fā)[J].工業(yè)控制計算機(jī),2015,28(7): 97-98,101.
[7] 浙江大華技術(shù)股份有限公司.設(shè)備網(wǎng)絡(luò)SDK(NetSDK)_Win64[EB/OL].http: //download.dahuatech.com/sdk_det.php?cid=1094&id=220.
[8] 牛軍龍.動力電池測試平臺軟件控制系統(tǒng)設(shè)計[D].北京: 北京交通大學(xué),2014.
[9] 黃雙玲.面向C/C++程序函數(shù)調(diào)用關(guān)系的靜態(tài)分析方法研究[D].合肥: 中國科學(xué)技術(shù)大學(xué),2015.
[10] 劉建峰..NET環(huán)境下軟件組件之間的互操作方法研究[D].南京: 南京理工大學(xué),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— ),女,碩士,助理工程師,主要從事工業(yè)軟件研發(fā)工作, E-mail: sunyy5@shanghai-electric.com
TM925.7
B
1674-540X(2017)02-009-04
*上海市科學(xué)技術(shù)委員會企業(yè)合作專項(編號: 15dz1180400)