From 9814ba539d1d34d1a75b52e5ea015ad0d5929848 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 20 十二月 2023 10:17:19 +0800
Subject: [PATCH] 增加火点检测子类型烟雾检测
---
src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java | 276 +++++++++++++++++--------------------------------------
1 files changed, 86 insertions(+), 190 deletions(-)
diff --git a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
index d9ef675..ad6ca50 100644
--- a/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
+++ b/src/main/java/com/ard/utils/sdk/hiksdk/service/impl/HikClientUtil.java
@@ -4,10 +4,12 @@
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.minio.MinioUtil;
+import com.ard.utils.sdk.hiksdk.domain.ChannelInfo;
import com.ard.utils.util.ByteUtils;
import com.ard.utils.sdk.hiksdk.common.GlobalVariable;
import com.ard.utils.sdk.hiksdk.domain.DeviceInfo;
import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK;
+import com.sun.jna.NativeLong;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
@@ -16,7 +18,6 @@
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
-
/**
* @ClassName: hikClientServiceImpl
@@ -32,60 +33,22 @@
public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
/**
- * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
- * @鍙傛暟 [dvrLogin]
- * @杩斿洖鍊� java.lang.Integer
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/1/17 16:12
- * @淇敼浜哄拰鍏跺畠淇℃伅
- */
- public ArdCameras login1(ArdCameras camera) {
- // 鍒濆鍖�
- if (!hCNetSDK.NET_DVR_Init()) {
- log.error("SDK鍒濆鍖栧け璐�");
- }
- //鎵撳嵃娴峰悍sdk鏃ュ織
- if (Platform.isWindows()) {
- String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
- hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
- } else {
- hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
- }
- String m_sDeviceIP = camera.getIp();
- String m_sUsername = camera.getUsername();
- String m_sPassword = camera.getPassword();
- short m_sPort = camera.getPort().shortValue();
- //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
- hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
- hCNetSDK.NET_DVR_SetReconnect(100000, true);
- //璁惧淇℃伅, 杈撳嚭鍙傛暟
- HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
- int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
- if (lUserID < 0) {
- //閲婃斁SDK璧勬簮
- hCNetSDK.NET_DVR_Cleanup();
- camera.setLoginId(-1);
- }
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
- GlobalVariable.loginMap.put(camera.getId(), lUserID);
-
- camera.setLoginId(lUserID);
- camera.setChannel((int) m_strDeviceInfo.byStartChan);
- return camera;
- }
-
- /**
* @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
* @鍒涘缓浜� 鍒樿嫃涔�
* @鍒涘缓鏃堕棿 2023/1/17 16:12
*/
- public static void login(DeviceInfo deviceInfo) {
+ public static int login(DeviceInfo deviceInfo) {
// 鍒濆鍖�
if (!hCNetSDK.NET_DVR_Init()) {
log.error("SDK鍒濆鍖栧け璐�");
}
+ //璁剧疆JSON閫忎紶鎶ヨ鏁版嵁鍜屽浘鐗囧垎绂�
+ HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG struNET_DVR_LOCAL_GENERAL_CFG = new HCNetSDK.NET_DVR_LOCAL_GENERAL_CFG();
+ struNET_DVR_LOCAL_GENERAL_CFG.byAlarmJsonPictureSeparate = 1; //璁剧疆JSON閫忎紶鎶ヨ鏁版嵁鍜屽浘鐗囧垎绂�
+ struNET_DVR_LOCAL_GENERAL_CFG.write();
+ Pointer pStrNET_DVR_LOCAL_GENERAL_CFG = struNET_DVR_LOCAL_GENERAL_CFG.getPointer();
+ hCNetSDK.NET_DVR_SetSDKLocalCfg(17, pStrNET_DVR_LOCAL_GENERAL_CFG);
+
//鎵撳嵃娴峰悍sdk鏃ュ織
if (Platform.isWindows()) {
String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
@@ -119,11 +82,12 @@
//寮傛鐧诲綍鍥炶皟
m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
m_strLoginInfo.write();
- int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
- if (i < 0) {
+ int loginId = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+ if (loginId < 0) {
int errorCode = hCNetSDK.NET_DVR_GetLastError();
log.error("鐧诲綍寮傚父锛�" + errorCode);
}
+ return loginId;
}
/**
@@ -166,12 +130,13 @@
info.setPort(camera.getPort());
info.setUsername(camera.getUsername());
info.setPassword(camera.getPassword());
+ info.setDeviceType(camera.getGdType());
login(info);
String key = camera.getIp() + ":" + camera.getPort();
GlobalVariable.cameraMap.put(key, camera);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ log.error("鐧诲綍鐩告満寮傚父锛�" + ex.getMessage());
}
}
@@ -195,147 +160,10 @@
GlobalVariable.cameraMap.remove(key);
}
} catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ log.error("娉ㄩ攢鐩告満寮傚父锛�" + ex.getMessage());
}
}
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal alarmHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(alarmHost.getId());
- info.setIp(alarmHost.getIp());
- info.setPort(alarmHost.getPort());
- info.setUsername(alarmHost.getUsername());
- info.setPassword(alarmHost.getPassword());
- login(info);
-// String key=alarmHost.getIp()+":"+alarmHost.getPort();
-// GlobalVariable.alarmHostMap.put(key, alarmHost);
- }
- } catch (Exception ex) {
- log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal alarmHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(alarmHost.getId());
- info.setIp(alarmHost.getIp());
- info.setPort(alarmHost.getPort());
- info.setUsername(alarmHost.getUsername());
- info.setPassword(alarmHost.getPassword());
- logout(info);
-// String key=alarmHost.getIp()+":"+alarmHost.getPort();
-// GlobalVariable.alarmHostMap.remove(key);
- }
- } catch (Exception ex) {
- log.error("鐧诲嚭鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal accessControlHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(accessControlHost.getId());
- info.setIp(accessControlHost.getIp());
- info.setPort(accessControlHost.getPort());
- info.setUsername(accessControlHost.getUsername());
- info.setPassword(accessControlHost.getPassword());
- login(info);
- }
- } catch (Exception ex) {
- log.error("鐧诲綍鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal accessControlHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(accessControlHost.getId());
- info.setIp(accessControlHost.getIp());
- info.setPort(accessControlHost.getPort());
- info.setUsername(accessControlHost.getUsername());
- info.setPassword(accessControlHost.getPassword());
- logout(info);
- }
- } catch (Exception ex) {
- log.error("鐧诲嚭鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夎秴鑴�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal superBrainHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(superBrainHost.getId());
- info.setIp(superBrainHost.getIp());
- info.setPort(superBrainHost.getPort());
- info.setUsername(superBrainHost.getUsername());
- info.setPassword(superBrainHost.getPassword());
- login(info);
- }
- } catch (Exception ex) {
- log.error("鐧诲綍鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夎秴鑴�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal superBrainHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(superBrainHost.getId());
- info.setIp(superBrainHost.getIp());
- info.setPort(superBrainHost.getPort());
- info.setUsername(superBrainHost.getUsername());
- info.setPassword(superBrainHost.getPassword());
- logout(info);
-// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
-// GlobalVariable.accessHostMap.remove(key);
- }
- } catch (Exception ex) {
- log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
- }
- }
/**
* @鎻忚堪 鐧诲綍鎵�鏈夊鑱旇澶�
* @鍒涘缓浜� 鍒樿嫃涔�
@@ -357,6 +185,7 @@
log.error("鐧诲綍鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage());
}
}
+
/**
* @鎻忚堪 鐧诲嚭鎵�鏈夊鑱旇澶�
* @鍒涘缓浜� 鍒樿嫃涔�
@@ -375,10 +204,9 @@
logout(info);
}
} catch (Exception ex) {
- log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+ log.error("鐧诲嚭鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage());
}
}
-
/**
@@ -412,6 +240,11 @@
m_strAlarmInfo.byDeployType = 1;
//浜鸿劯鎶ヨ淇℃伅绫诲瀷锛�1- 浜鸿劯渚︽祴鎶ヨ 0- 浜鸿劯鎶撴媿鎶ヨ
m_strAlarmInfo.byFaceAlarmDetection = 0;
+ //鎶ヨ鍥剧墖鏁版嵁绫诲瀷锛屾寜浣嶈〃绀猴細
+ //bit0- 浜鸿劯鎶撴媿(鎶ヨ绫诲瀷涓篊OMM_UPLOAD_FACESNAP_RESULT)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭
+ //bit1- EVENT_JSON(鎶ヨ绫诲瀷涓篊OMM_VCA_ALARM)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭
+ //bit2- 浜鸿劯姣斿(鎶ヨ绫诲瀷涓篊OMM_SNAP_MATCH_ALARM)涓浘鐗囨暟鎹笂浼犵被鍨嬶細0- 浜岃繘鍒朵紶杈擄紝1- URL浼犺緭
+ m_strAlarmInfo.byAlarmTypeURL = 0;
m_strAlarmInfo.write();
// 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
@@ -527,4 +360,67 @@
return name;
}
+ //鑾峰彇IP閫氶亾
+ public static void getIPChannelInfo(String deviceId, int iUserID) {
+ try {
+ GlobalVariable.deviceChanMap.remove(deviceId);
+ List<ChannelInfo> channelInfoList = new ArrayList<>();
+ int chanNum = 64;
+ IntByReference ibrBytesReturned = new IntByReference(0);//鑾峰彇IP鎺ュ叆閰嶇疆鍙傛暟
+ HCNetSDK.NET_DVR_IPPARACFG_V40 m_strIpparaCfg = new HCNetSDK.NET_DVR_IPPARACFG_V40();
+ m_strIpparaCfg.write();
+ //lpIpParaConfig 鎺ユ敹鏁版嵁鐨勭紦鍐叉寚閽�
+ Pointer lpIpParaConfig = m_strIpparaCfg.getPointer();
+ boolean bRet = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_IPPARACFG_V40, 0, lpIpParaConfig, m_strIpparaCfg.size(), ibrBytesReturned);
+ m_strIpparaCfg.read();
+ //log.debug("璧峰鏁板瓧閫氶亾鍙凤細" + m_strIpparaCfg.dwStartDChan);
+ for (int iChannum = 0; iChannum < chanNum; iChannum++) {
+ int channum = iChannum + m_strIpparaCfg.dwStartDChan;
+ HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40();
+ strPicCfg.dwSize = strPicCfg.size();
+ strPicCfg.write();
+ Pointer pStrPicCfg = strPicCfg.getPointer();
+ NativeLong lChannel = new NativeLong(channum);
+ IntByReference pInt = new IntByReference(0);
+ boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(),
+ pStrPicCfg, strPicCfg.size(), pInt);
+// if (b_GetPicCfg == false) {
+// System.out.println("鑾峰彇鍥惧儚鍙傛暟澶辫触锛岄敊璇爜锛�" + hCNetSDK.NET_DVR_GetLastError());
+// }
+ strPicCfg.read();
+ m_strIpparaCfg.struStreamMode[iChannum].read();
+ if (m_strIpparaCfg.struStreamMode[iChannum].byGetStreamType == 0) {
+ m_strIpparaCfg.struStreamMode[iChannum].uGetStream.setType(HCNetSDK.NET_DVR_IPCHANINFO.class);
+ m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.read();
+
+ //log.debug("--------------绗�" + (iChannum + 1) + "涓�氶亾------------------");
+ int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256;
+ //log.debug("channel:" + channel);
+ if (channel > 0) {
+ //log.debug("name锛� " + new String(strPicCfg.sChanName, "GBK").trim());
+ //log.debug("ip锛� " + new String(m_strIpparaCfg.struIPDevInfo[channel - 1].struIP.sIpV4).trim());
+ //log.debug("port锛� " + m_strIpparaCfg.struIPDevInfo[channel - 1].wDVRPort);
+ String name = new String(strPicCfg.sChanName, "GBK").trim();
+ String ip = new String(m_strIpparaCfg.struIPDevInfo[channel - 1].struIP.sIpV4).trim();
+ int port = m_strIpparaCfg.struIPDevInfo[channel - 1].wDVRPort;
+ ChannelInfo channelInfo = new ChannelInfo();
+ channelInfo.setIp(ip);
+ channelInfo.setPort(port);
+ channelInfo.setName(name);
+ channelInfoList.add(channelInfo);
+ }
+ if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) {
+ //log.debug("IP閫氶亾" + channum + "鍦ㄧ嚎");
+ } else {
+ //log.debug("IP閫氶亾" + channum + "涓嶅湪绾�");
+ }
+ }
+ }
+ if (channelInfoList.size() > 0) {
+ GlobalVariable.deviceChanMap.put(deviceId, channelInfoList);
+ }
+ } catch (Exception ex) {
+ log.error("鑾峰彇IP閫氶亾寮傚父锛�" + ex.getMessage());
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3