SDK版本:CH-HCNetSDKV6.0.2.35_build20190411_Win32
HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
//初始化
if (!hCNetSDK.NET_DVR_Init()) {
System.out.println("海康威视SDK 初始化失败" );
continue;
}
//登陆
HCNetSDK.NET_DVR_DEVICEINFO_V30 netDvrDeviceInfoV30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
NativeLong loginId = hCNetSDK.NET_DVR_Login_V30(ip, port, account, password, netDvrDeviceInfoV30);
//登录成功 去拉取通道状态
HCNetSDK.NET_DVR_WORKSTATE_V30 devwork = new HCNetSDK.NET_DVR_WORKSTATE_V30();
boolean net_DVR_GetDVRWorkState_V30 = hCNetSDK.NET_DVR_GetDVRWorkState_V30(loginId, devwork);
logger.warn("DVR工作状态:{}", net_DVR_GetDVRWorkState_V30);
if (!net_DVR_GetDVRWorkState_V30) {
// 返回Boolean值,判断是否获取设备能力
logger.warn("返回设备状态失败");
}
IntByReference ibrBytesReturned = new IntByReference(0);// 获取IP接入配置参数
HCNetSDK.NET_DVR_IPPARACFG ipcfg = new HCNetSDK.NET_DVR_IPPARACFG();// IP接入配置结构
ipcfg.write();
Pointer lpIpParaConfig = ipcfg.getPointer();
// 获取相关参数配置
hCNetSDK.NET_DVR_GetDVRConfig(loginId, HCNetSDK.NET_DVR_GET_IPPARACFG, new NativeLong(0), lpIpParaConfig, ipcfg.size(),
ibrBytesReturned);
ipcfg.read();
logger.warn("设备状态:{} ;IP通道数:{}", devwork.dwDeviceStatic , netDvrDeviceInfoV30.byIPChanNum);
// 循环获取IP通道状态
for (int i = 0; i < netDvrDeviceInfoV30.byIPChanNum; i++) {
//是一个只读的属性;0表示HDVR或者NVR设备的数字通道连接对应的IP设备失败,该通道不在线;1表示连接成功,该通道在线
logger.warn("IP通道在线状态:{}", ipcfg.struIPChanInfo[i].byEnable);
// 是一个只读的属性;例如设备A(HDVR或者NVR设备)的IP通道01,对应的是设备B里的通道04,则byChannel=4。
logger.warn("IP设备的通道号:{}", ipcfg.struIPChanInfo[i].byChannel);
}