海康SDK开发NET_DVR_GetDVRWorkState_V30获取不到信息

时间:2021-07-04 17:04:39
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct NET_DVR_IPADDR
        {
            [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 16)]
            public string sIpV4;                    //IPv4地址 
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 128)]
            public byte[] sIpV6;//设备IP地址 
        }

        [StructLayoutAttribute(LayoutKind.Sequential)]
        public struct NET_DVR_CHANNELSTATE_V30
        {
            public byte byRecordStatic;//通道是否在录像:0-不录像;1-录像
            public byte bySignalStatic;//通道是否在录像:0-不录像;1-录像
            public byte byHardwareStatic;//通道硬件状态:0-正常,1-异常(例如DSP异常)
            public byte byRes1;//保留,置为0
            public uint dwBitRate;//实际码率
            public uint dwLinkNum;//连接的客户端个数
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
            public NET_DVR_IPADDR[] struClientIP;//连接的客户端IP地址
            public uint dwIPLinkNum;//如果该通道为IP接入,那么表示IP接入当前的连接数
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 12, ArraySubType = UnmanagedType.I1)]
            public byte byRes;//保留,置为0
        }

        [StructLayoutAttribute(LayoutKind.Sequential)]
        public struct DVR_WORKSTATE_V30
        {
            public uint dwDeviceStatic;//设备的状态:0-正常;1-CPU占用率太高,超过85%;2-硬件错误,例如串口异常 
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
            public NET_DVR_DISKSTATE[] struHardDiskStatic;//硬盘状态
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_CHANNUM+MAX_IP_CHANNEL)]
            public NET_DVR_CHANNELSTATE_V30[] struChanStatic;//通道状态
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_ALARMIN+MAX_IP_ALARMIN)]
            public byte[] byAlarmInStatic;//报警输入口的状态:0-没有报警;1-有报警 
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_ANALOG_ALARMOUT+MAX_IP_ALARMOUT)]
            public byte[] byAlarmOutStatic;//报警输出口的状态:0-没有输出,1-有报警输出 
            public uint dwLocalDisplay;//本地显示状态:0-正常,1-不正常 
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public byte[] byAudioChanStatus;//表示语音通道的状态:0-未使用,1-使用中,0xff无效
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = UnmanagedType.I1)]
            public byte[] byRes;
        }

[DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_GetDVRWorkState_V30(Int32 lUserID, ref NET_DVR_WORKSTATE lpWorkState);
但是程序就是出现问题

8 个解决方案

#1


没有人知道吗???

#2


各位大哥大姐帮帮忙啊 

#3


估计没人知道!呵呵 你这sdk是什么啊

#4


引用 3 楼 bios8086 的回复:
估计没人知道!呵呵 你这sdk是什么啊


海康威视提供的SDK 但是是C++的不怎么会用啊

#5


C# 可以调用C+DLL的

#6


說這麼多幹嘛,問供應商啊,你真是,。。。。。。。。。。。。。。。。。。。。。。難道沒有支持?-------------------------------你使用xxx版本??????????????????????????

#7


"但是程序就是出现问题",是什么问题,你说清楚些,最好把程序报错贴出来!
还有,把C++的函数和结构体原型贴出来,看看转换有没有出错?

#8


你只把SDK里定义的一些变量和方法贴出来,怎么知道你出了什么错?

#1


没有人知道吗???

#2


各位大哥大姐帮帮忙啊 

#3


估计没人知道!呵呵 你这sdk是什么啊

#4


引用 3 楼 bios8086 的回复:
估计没人知道!呵呵 你这sdk是什么啊


海康威视提供的SDK 但是是C++的不怎么会用啊

#5


C# 可以调用C+DLL的

#6


說這麼多幹嘛,問供應商啊,你真是,。。。。。。。。。。。。。。。。。。。。。。難道沒有支持?-------------------------------你使用xxx版本??????????????????????????

#7


"但是程序就是出现问题",是什么问题,你说清楚些,最好把程序报错贴出来!
还有,把C++的函数和结构体原型贴出来,看看转换有没有出错?

#8


你只把SDK里定义的一些变量和方法贴出来,怎么知道你出了什么错?