孫云云
上海電氣集團股份有限公司 中央研究院 上海 200070
?
基于大華軟件開發工具包的組態軟件視頻監控控件*
孫云云
上海電氣集團股份有限公司 中央研究院 上海 200070
視頻監控用于重要場所的安全防護,組態軟件作為數據采集與過程控制的專用軟件,整合視頻監控功能很有必要。介紹了使用C#語言調用大華軟件開發工具包開發可嵌入NetControl組態軟件的控件,以實現網絡攝像機的視頻預覽、錄像存儲、截圖、云臺控制等功能,同時實現與組態軟件中其它子系統的數據交互。
軟件開發工具包; 視頻監控; 組態軟件
組態軟件是處于自動控制系統監控層一級的軟件平臺和開發環境,可為用戶實現快速構建工業自動控制系統的監控功能[1]。針對國內中小型企業面臨的生產需求,上海電氣集團結合國內組態軟件的發展情況,開發出NetControl通用數據采集和監控軟件,用于機械制造、化工、電力等涉及自動化的領域[2]。
伴隨計算機網絡、多媒體技術的發展,視頻監控得到了快速發展。隨著人們安全意識的提高,視頻監控廣泛應用于各種行業。視頻監控由于具備內容直觀豐富、操作簡單等優點,近年來在工業自動化領域中也開始廣泛運用[3-4]。組態軟件作為自動化領域中數據采集和過程控制的專用軟件,整合視頻監控功能十分有必要[5]。
筆者主要介紹基于大華軟件開發工具包(SDK)的NetControl組態軟件視頻監控控件,可以為組態軟件添加大華視頻監控功能,進而實現視頻監控信息采集與設備控制,同時實現與組態軟件其它子系統的實時數據交互。
SDK一般是軟件工程師為特定軟件包、軟件框架、硬件平臺、操作系統等建立的應用軟件開發工具[6]。大華設備網絡SDK是基于設備私有網絡通信協議而開發的套件,為網絡硬盤錄像機、網絡視頻服務器、網絡攝像機、網絡球機、智能設備等產品服務,主要包括業務操作和設備管理兩大部分,具有實時監控、錄像回放與下載、云臺控制、遠程升級等功能[7]。

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.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中的顯示
筆者主要介紹了通過控件形式在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)