C#获取设置海康SDK本地参数(SDKLocalCfg)

参考海康设备网络SDK文档关于获取、设置SDK本地参数,如下:
C#获取设置海康SDK本地参数(SDKLocalCfg)_第1张图片C#获取设置海康SDK本地参数(SDKLocalCfg)_第2张图片

代码实现中涉及参数类型转换、定义枚举与结构体、引用结构,如下:

#region 以下参考自设备网络SDK使用手册_V6.0
public enum NET_SDK_LOCAL_CFG_TYPE
{
    NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0,
    NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND = 1,
    NET_SDK_LOCAL_CFG_TYPE_MEM_POOL = 2,
    NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT = 3,
    NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE = 4,
    NET_SDK_LOCAL_CFG_TYPE_TALK_MODE = 5,
    NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV = 10,
    NET_DVR_LOCAL_CFG_TYPE_GENERAL = 17,
    NET_DVR_LOCAL_CFG_TYPE_PTZ = 18
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct NET_DVR_LOCAL_GENERAL_CFG
{
    public byte byExceptionCbDirectly;//异常回调类型:0- 通过线程池异常回调,1- 直接异常回调给上层 
    public byte byNotSplitRecordFile;//回放和预览中保存到本地录像文件不切片:0- 切片(默认),1- 不切片 
    public byte byResumeUpgradeEnable;//断网续传升级使能:0-关闭(默认),1-开启
    public byte byAlarmJsonPictureSeparate;//控制JSON透传报警数据和图片是否分离,0-不分离,1-分离(分离后走COMM_ISAPI_ALARM回调返回) 
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.I1)]
    public byte[] byRes;//保留 
    public UInt32 i64FileSize;//文件最大限制字节数,单位:Byte,启用切片(byNotSplitRecordFile为0)时,预览和回放保存的录像文件超过这个大小限制会自动切片,即新建文件进行保存
    public UInt16 dwResumeUpgradeTimeout;//断网续传重连超时时间,单位毫秒
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 236, ArraySubType = UnmanagedType.I1)]
    public byte[] byRes1;//保留
}
[DllImportAttribute(@"..\bin\HCNetSDK.dll")]
public static extern bool NET_DVR_GetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, ref NET_DVR_LOCAL_GENERAL_CFG lpInBuff);
[DllImportAttribute(@"..\bin\HCNetSDK.dll")]
public static extern bool NET_DVR_SetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, ref NET_DVR_LOCAL_GENERAL_CFG lpInBuff);
#endregion
//初始化SDK
m_bInitSDK = CHCNetSDK.NET_DVR_Init();

//获取SDK本地参数
CHCNetSDK.NET_DVR_LOCAL_GENERAL_CFG gENERAL_CFG0 = new CHCNetSDK.NET_DVR_LOCAL_GENERAL_CFG();
bool abc = CHCNetSDK.NET_DVR_GetSDKLocalCfg(CHCNetSDK.NET_SDK_LOCAL_CFG_TYPE.NET_DVR_LOCAL_CFG_TYPE_GENERAL, ref gENERAL_CFG0);

//设置SDK本地参数,已测试。设置不切片与文件大小限值后,视频文件超过设置大小时不自动停止录像。
CHCNetSDK.NET_DVR_LOCAL_GENERAL_CFG gENERAL_CFG1 = new CHCNetSDK.NET_DVR_LOCAL_GENERAL_CFG();
gENERAL_CFG1.byExceptionCbDirectly = 0;
gENERAL_CFG1.byNotSplitRecordFile = 1;//0-切片 1-不切片
gENERAL_CFG1.byResumeUpgradeEnable = 0;
gENERAL_CFG1.byAlarmJsonPictureSeparate = 0;
gENERAL_CFG1.dwResumeUpgradeTimeout = 0;
gENERAL_CFG1.i64FileSize = 10485760;//10mb=10485760b
bool bcd = CHCNetSDK.NET_DVR_SetSDKLocalCfg(CHCNetSDK.NET_SDK_LOCAL_CFG_TYPE.NET_DVR_LOCAL_CFG_TYPE_GENERAL, ref gENERAL_CFG1);

你可能感兴趣的:(C#,.net)