diff --git a/pom.xml b/pom.xml index 6d94ed0..6c6cdbe 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,11 @@ 1.8 2.5.6 + 1.2.8 + 3.0.0 + 3.0.2 + 1.5.21 + 1.5.21 @@ -29,6 +34,77 @@ org.springframework.boot spring-boot-starter + + + org.springframework.boot + spring-boot-starter-logging + + + + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.6 + + + + org.apache.velocity + velocity-engine-core + 2.0 + + + + com.baomidou + mybatis-plus-generator + 3.5.6 + + + + + io.springfox + springfox-boot-starter + ${swagger.version} + + + + + + + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j-spring-boot.version} + + + + + io.swagger + swagger-annotations + ${swagger-annotations.version} + + + + io.swagger + swagger-models + ${swagger-models.version} + + + + mysql + mysql-connector-java + 8.0.27 + + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} @@ -60,20 +136,6 @@ org.springframework.boot spring-boot-starter-test test - - - org.slf4j - slf4j-log4j12 - - - org.springframework.boot - spring-boot-starter-logging - - - ch.qos.logback - logback-classic - - diff --git a/src/main/java/com/shxy/xyhkcamera/AppRunner.java b/src/main/java/com/shxy/xyhkcamera/AppRunner.java deleted file mode 100644 index 4266910..0000000 --- a/src/main/java/com/shxy/xyhkcamera/AppRunner.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.shxy.xyhkcamera; - - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -@Component -public class AppRunner implements ApplicationRunner { - @Autowired - private SdkInitService hksdkInitService; - - @Override - public void run(ApplicationArguments args) throws Exception { - hksdkInitService.initSdk(); - } -} - - diff --git a/src/main/java/com/shxy/xyhkcamera/HCNetSDK.java b/src/main/java/com/shxy/xyhkcamera/HCNetSDK.java index 16e9889..640f6ac 100644 --- a/src/main/java/com/shxy/xyhkcamera/HCNetSDK.java +++ b/src/main/java/com/shxy/xyhkcamera/HCNetSDK.java @@ -22,7 +22,7 @@ public interface HCNetSDK extends StdCallLibrary { */ // HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("/home/hksdk/lib/libhcnetsdk.so",HCNetSDK.class); - HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("D:\\Workspace\\HK\\HCNetSDK.dll", HCNetSDK.class); +// HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("D:\\Workspace\\HK\\HCNetSDK.dll", HCNetSDK.class); /*** 宏定义 ***/ diff --git a/src/main/java/com/shxy/xyhkcamera/HcNetSdkUtil.java b/src/main/java/com/shxy/xyhkcamera/HcNetSdkUtil.java index 83c3777..f803ef5 100644 --- a/src/main/java/com/shxy/xyhkcamera/HcNetSdkUtil.java +++ b/src/main/java/com/shxy/xyhkcamera/HcNetSdkUtil.java @@ -1,6 +1,7 @@ package com.shxy.xyhkcamera; import com.sun.jna.Native; +import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +20,7 @@ public class HcNetSdkUtil { private static final Logger logger = LoggerFactory.getLogger(HcNetSdkUtil.class); private HCNetSDK hCNetSDK = null; + /** * 用户登录返回句柄 */ @@ -34,65 +36,88 @@ public class HcNetSdkUtil { @Value("${hkconfig.linuxpath}") private String linuxPath; + + static FExceptionCallBack_Imp fExceptionCallBack; + + static class FExceptionCallBack_Imp implements HCNetSDK.FExceptionCallBack { + public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { + System.out.println("异常事件类型:" + dwType); + return; + } + } + /** * 动态库加载 * * @return */ - public HCNetSDK createSDKInstance() { if (hCNetSDK == null) { - //Linux系统加载库路径 - String path = System.getProperty("user.dir") + "/lib"; synchronized (HCNetSDK.class) { - if (OsSelect.isWindows()) { - //win系统加载库路径 - try { - hCNetSDK = (HCNetSDK) Native.loadLibrary(winPath, HCNetSDK.class); - } catch (Exception e) { - System.out.println(e.getMessage()); - } - log.info("海康动态库加载 Windows版"); - } else if (OsSelect.isLinux()) { - log.info(">>>> " + path + "/libhcnetsdk.so"); - hCNetSDK = HCNetSDK.INSTANCE; - log.info("海康动态库加载 Linux版"); + try { + hCNetSDK = (HCNetSDK) Native.loadLibrary(OSUtils.getLoadLibrary(), HCNetSDK.class); + } catch (Exception e) { + System.out.println(e.getMessage()); } + log.info("海康动态库加载"); } - if (OsSelect.isLinux()) { - //Linux版额外加载 - load(path); - } + load(); } return hCNetSDK; } /** * 使用 linux环境加载额外文件 - * - * @param path sdk目录(不指定具体文件) */ - private void load(String path) { + private void load() { //设置HCNetSDKCom组件库所在路径 - String strPathCom = path + "/"; - HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); - System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); - struComPath.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); - - //设置libcrypto.so所在路径 - HCNetSDK.BYTE_ARRAY ptrByteArrayCrypto = new HCNetSDK.BYTE_ARRAY(256); - String strPathCrypto = path + "/libcrypto.so.1.1"; - System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length()); - ptrByteArrayCrypto.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer()); - - //设置libssl.so所在路径 - HCNetSDK.BYTE_ARRAY ptrByteArraySsl = new HCNetSDK.BYTE_ARRAY(256); - String strPathSsl = path + "/libssl.so.1.1"; - System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length()); - ptrByteArraySsl.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer()); + if (Objects.equals(OSUtils.getOsName(), "linux")) { + log.info("InitSdk-is-linux"); + String userDir = System.getProperty("user.dir"); + log.info("InitSdk-userDir={}", userDir); + String osPrefix = OSUtils.getOsPrefix(); + if (osPrefix.toLowerCase().startsWith("linux-i386")) { + HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); + HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); + //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 + //linux 下, 库加载参考:OSUtils.getLoadLibrary() + String strPath1 = System.getProperty("user.dir") + "/hkliblinux32/libcrypto.so.1.1"; + String strPath2 = System.getProperty("user.dir") + "/hkliblinux32/libssl.so.1.1"; + System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); + ptrByteArray1.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); + System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); + ptrByteArray2.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); + //linux 下, 库加载参考:OSUtils.getLoadLibrary() + String strPathCom = System.getProperty("user.dir") + "/hkliblinux32/HCNetSDKCom/"; + HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); + System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); + struComPath.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); + } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) { + HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); + HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); + //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 + //linux 下, 库加载参考:OSUtils.getLoadLibrary() + String strPath1 = System.getProperty("user.dir") + "/hkliblinux64/libcrypto.so.1.1"; + String strPath2 = System.getProperty("user.dir") + "/hkliblinux64/libssl.so.1.1"; + System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); + ptrByteArray1.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); + System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); + ptrByteArray2.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); + String strPathCom = System.getProperty("user.dir") + "/hkliblinux64/HCNetSDKCom/"; + //linux 下, 库加载参考:OSUtils.getLoadLibrary() + HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); + System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); + struComPath.write(); + hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); + } else { + log.info("osPrefix={}", osPrefix); + } + } } /** @@ -111,6 +136,57 @@ public class HcNetSdkUtil { if (!initSuc) { log.error("海康 SDK 初始化失败"); throw new RuntimeException("海康 SDK 初始化失败"); + } else { + log.error("海康 SDK 初始化成功"); + } + if (fExceptionCallBack == null) { + fExceptionCallBack = new FExceptionCallBack_Imp(); + } + Pointer pUser = null; + if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, pUser)) { + return; + } + System.out.println("设置异常消息回调成功"); + } + + + /** + * 设备登录V40 与V30功能一致 + * + * @param ip 设备IP + * @param port SDK端口,默认设备的8000端口 + * @param user 设备用户名 + * @param psw 设备密码 + */ + public int login_V40(String ip, short port, String user, String psw) { + //注册 + HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 + HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 + + String m_sDeviceIP = ip;//设备ip地址 + m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; + System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); + + String m_sUsername = user;//设备用户名 + m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; + System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); + + String m_sPassword = psw;//设备密码 + m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; + System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); + + m_strLoginInfo.wPort = port; + m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 +// m_strLoginInfo.byLoginMode=1; //ISAPI登录 + m_strLoginInfo.write(); + + int iUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); + if (iUserID == -1) { + System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); + return iUserID; + } else { + System.out.println(ip + ":设备登录成功!"); + return iUserID; } } diff --git a/src/main/java/com/shxy/xyhkcamera/InitSdkTask.java b/src/main/java/com/shxy/xyhkcamera/InitSdkTask.java deleted file mode 100644 index fa3ec7c..0000000 --- a/src/main/java/com/shxy/xyhkcamera/InitSdkTask.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.shxy.xyhkcamera; - - -import lombok.extern.slf4j.Slf4j; - -import java.util.Objects; - -@Slf4j -public class InitSdkTask implements Runnable { - /** - * 装配 sdk 所需依赖 - */ - private static HCNetSDK hCNetSDK = SdkInitService.hCNetSDK; - - @Override - public void run() { - try { - if (Objects.equals(OSUtils.getOsName(), "linux")) { - log.info("InitSdk-is-linux"); - String userDir = System.getProperty("user.dir"); - log.info("InitSdk-userDir={}", userDir); - String osPrefix = OSUtils.getOsPrefix(); - if (osPrefix.toLowerCase().startsWith("linux-i386")) { - HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); - HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); - //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 - //linux 下, 库加载参考:OSUtils.getLoadLibrary() - String strPath1 = System.getProperty("user.dir") + "/hkliblinux32/libcrypto.so.1.1"; - String strPath2 = System.getProperty("user.dir") + "/hkliblinux32/libssl.so.1.1"; - System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); - ptrByteArray1.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); - System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); - ptrByteArray2.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); - //linux 下, 库加载参考:OSUtils.getLoadLibrary() - String strPathCom = System.getProperty("user.dir") + "/hkliblinux32/HCNetSDKCom/"; - HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); - System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); - struComPath.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); - } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) { - HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); - HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); - //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 - //linux 下, 库加载参考:OSUtils.getLoadLibrary() - String strPath1 = System.getProperty("user.dir") + "/hkliblinux64/libcrypto.so.1.1"; - String strPath2 = System.getProperty("user.dir") + "/hkliblinux64/libssl.so.1.1"; - System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); - ptrByteArray1.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); - System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); - ptrByteArray2.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); - String strPathCom = System.getProperty("user.dir") + "/hkliblinux64/HCNetSDKCom/"; - //linux 下, 库加载参考:OSUtils.getLoadLibrary() - HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); - System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); - struComPath.write(); - hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); - } else { - log.info("osPrefix={}", osPrefix); - } - } - //初始化sdk - boolean isOk = hCNetSDK.NET_DVR_Init(); - hCNetSDK.NET_DVR_SetConnectTime(10, 1); - hCNetSDK.NET_DVR_SetReconnect(100, true); - if (!isOk) { - log.error("=================== InitSDK init fail ==================="); - } else { - log.info("============== InitSDK init success ===================="); - } - } catch (Exception e) { - log.error("InitSDK-error,e={}", e.getMessage()); - e.printStackTrace(); - } - } -} - diff --git a/src/main/java/com/shxy/xyhkcamera/OSUtils.java b/src/main/java/com/shxy/xyhkcamera/OSUtils.java index 44fb438..d6d6715 100644 --- a/src/main/java/com/shxy/xyhkcamera/OSUtils.java +++ b/src/main/java/com/shxy/xyhkcamera/OSUtils.java @@ -61,9 +61,6 @@ public class OSUtils { * @return */ public static String getLoadLibrary() { - if (isChecking()) { - return null; - } String userDir = System.getProperty("user.dir"); log.info("getLoadLibrary-userDir={}", userDir); String loadLibrary = ""; @@ -92,19 +89,6 @@ public class OSUtils { return loadLibrary + library; } - private static boolean checking = false; - - public static void setChecking() { - checking = true; - } - - public static void clearChecking() { - checking = false; - } - - public static boolean isChecking() { - return checking; - } } diff --git a/src/main/java/com/shxy/xyhkcamera/OsSelect.java b/src/main/java/com/shxy/xyhkcamera/OsSelect.java deleted file mode 100644 index a997e21..0000000 --- a/src/main/java/com/shxy/xyhkcamera/OsSelect.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.shxy.xyhkcamera; - -/** - * @author jiangxin - * @create 2022-01-19-16:40 - */ -public class OsSelect { - - public static boolean isLinux() { - return System.getProperty("os.name").toLowerCase().contains("linux"); - } - - public static boolean isWindows() { - return System.getProperty("os.name").toLowerCase().contains("windows"); - } -} diff --git a/src/main/java/com/shxy/xyhkcamera/SdkInitService.java b/src/main/java/com/shxy/xyhkcamera/SdkInitService.java deleted file mode 100644 index 31e45a3..0000000 --- a/src/main/java/com/shxy/xyhkcamera/SdkInitService.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.shxy.xyhkcamera; - -import com.sun.jna.Native; -import com.sun.jna.Pointer; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.concurrent.ThreadPoolExecutor; - -@Slf4j -@Component -public class SdkInitService { - - @Autowired - private ThreadPoolExecutor executor; - - public static HCNetSDK hCNetSDK = null; - static FExceptionCallBack_Imp fExceptionCallBack; - - static class FExceptionCallBack_Imp implements HCNetSDK.FExceptionCallBack { - public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { - System.out.println("异常事件类型:" + dwType); - return; - } - } - - public SdkInitService() { - if (hCNetSDK == null) { - synchronized (HCNetSDK.class) { - try { - hCNetSDK = (HCNetSDK) Native.loadLibrary(OSUtils.getLoadLibrary(), HCNetSDK.class); - } catch (Exception ex) { - log.error("SdkInitService-init-hCNetSDK-error"); - } - } - } - } - - @Autowired - public void initSdk() { - log.info("HKSDKInitService-init-coming"); - executor.execute(new InitSdkTask()); - } -} - diff --git a/src/main/java/com/shxy/xyhkcamera/Test.java b/src/main/java/com/shxy/xyhkcamera/Test.java deleted file mode 100644 index bbd6158..0000000 --- a/src/main/java/com/shxy/xyhkcamera/Test.java +++ /dev/null @@ -1,13 +0,0 @@ -//package com.shxy.xyhkcamera; -// -//public class Test { -// public static void main(String[] args) { -// -//// HcNetSdkUtil hcNetSdkUtil = new HcNetSdkUtil(56, "", ""); -//// HCNetSDK sdkInstance = hcNetSdkUtil.createSDKInstance(); -//// sdkInstance.NET_DVR_Init(); -//// sdkInstance.NET_DVR_Login_V40(); -//// sdkInstance.NET_DVR_STDXMLConfig(); -//// sdkInstance.NET_DVR_StartRemoteConfig() -// } -//} diff --git a/src/main/java/com/shxy/xyhkcamera/TestDemo.java b/src/main/java/com/shxy/xyhkcamera/TestDemo.java new file mode 100644 index 0000000..2421655 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/TestDemo.java @@ -0,0 +1,858 @@ +//package com.shxy.xyhkcamera; +// +//import com.sun.jna.Native; +//import com.sun.jna.NativeLong; +//import com.sun.jna.Pointer; +//import com.sun.jna.ptr.IntByReference; +// +//import java.io.IOException; +//import java.io.UnsupportedEncodingException; +//import java.text.SimpleDateFormat; +//import java.util.Date; +// +///** +// * @create 2020-07-27-10:42 +// */ +//public class TestDemo { +// static HCNetSDK hCNetSDK = null; +// static int lUserID = -1; //用户句柄 +// public static flowTestcallback flowcallback; +// public static dev_work_state_cb workStateCb; +// public static FExceptionCallBack_Imp fExceptionCallBack; +// +// static class dev_work_state_cb implements HCNetSDK.DEV_WORK_STATE_CB { +// public boolean invoke(Pointer pUserdata, int iUserID, HCNetSDK.NET_DVR_WORKSTATE_V40 lpWorkState) { +// +// lpWorkState.read(); +// System.out.println("设备状态:" + lpWorkState.dwDeviceStatic); +// for (int i = 0; i < HCNetSDK.MAX_CHANNUM_V40; i++) { +// int channel = i + 1; +// System.out.println("第" + channel + "通道是否在录像:" + lpWorkState.struChanStatic[i].byRecordStatic); +// } +// return true; +// } +// +// } +// +// static class FExceptionCallBack_Imp implements HCNetSDK.FExceptionCallBack { +// public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { +// System.out.println("异常事件类型:" + dwType); +// return; +// } +// } +// +// static class flowTestcallback implements HCNetSDK.FLOWTESTCALLBACK { +// public void invoke(int lFlowHandle, HCNetSDK.NET_DVR_FLOW_INFO pFlowInfo, +// Pointer pUser) { +// pFlowInfo.read(); +// System.out.println("发送的流量数据:" + pFlowInfo.dwSendFlowSize); +// System.out.println("接收的流量数据:" + pFlowInfo.dwRecvFlowSize); +// } +// } +// +// /** +// * 动态库加载 +// * +// * @return +// */ +// private static boolean createSDKInstance() { +// if (hCNetSDK == null) { +// synchronized (HCNetSDK.class) { +// String strDllPath = ""; +// try { +// if (osSelect.isWindows()) +// //win系统加载SDK库路径 +// strDllPath = System.getProperty("user.dir") + "\\lib\\HCNetSDK.dll"; +// +// else if (osSelect.isLinux()) +// //Linux系统加载SDK库路径 +// strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; +// hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); +// } catch (Exception ex) { +// System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage()); +// return false; +// } +// } +// } +// return true; +// } +// +// public static void main(String[] args) throws IOException, InterruptedException { +// if (hCNetSDK == null) { +// if (!createSDKInstance()) { +// System.out.println("Load SDK fail"); +// return; +// } +// } +// //linux系统建议调用以下接口加载组件库 +// if (osSelect.isLinux()) { +// HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); +// HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); +// //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 +// String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.1"; +// String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so.1.1"; +// +// System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); +// ptrByteArray1.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); +// +// System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); +// ptrByteArray2.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); +// +// String strPathCom = System.getProperty("user.dir") + "/lib/"; +// HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); +// System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); +// struComPath.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); +// } +// +// //SDK初始化,一个程序进程只需要调用一次 +// hCNetSDK.NET_DVR_Init(); +// +// if (fExceptionCallBack == null) { +// fExceptionCallBack = new FExceptionCallBack_Imp(); +// } +// Pointer pUser = null; +// if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, pUser)) { +// return; +// } +// System.out.println("设置异常消息回调成功"); +// +// //启用SDK写日志 +// hCNetSDK.NET_DVR_SetLogToFile(3, "./sdkLog", false); +// +// +// //登录设备,每一台设备只需要登录一次 +// lUserID = TestDemo.login_V40("10.16.36.13", (short) 8000, "admin", "hik12345"); +// +// getDeviceStatus(lUserID); +//// getIPChannelInfo(lUserID); +//// getGisInfo(lUserID); +//// getIP(); +// Thread.sleep(2000); +// //程序退出的时候调用注销登录接口,每一台设备分别调用一次 +// if (hCNetSDK.NET_DVR_Logout(lUserID)) { +// System.out.println("注销成功"); +// } +// +// //释放SDK资源,程序退出时调用,只需要调用一次 +// hCNetSDK.NET_DVR_Cleanup(); +// return; +// } +// +// /** +// * 设备登录V30 +// * +// * @param ip 设备IP +// * @param port SDK端口,默认设备的8000端口 +// * @param user 设备用户名 +// * @param psw 设备密码 +// */ +// public static int login_V30(String ip, short port, String user, String psw) { +// HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); +// int iUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, user, psw, m_strDeviceInfo); +// System.out.println("UserID:" + lUserID); +// if ((iUserID == -1) || (iUserID == 0xFFFFFFFF)) { +// System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return iUserID; +// } else { +// System.out.println(ip + ":设备登录成功!"); +// return iUserID; +// } +// } +// +// /** +// * 设备登录V40 与V30功能一致 +// * +// * @param ip 设备IP +// * @param port SDK端口,默认设备的8000端口 +// * @param user 设备用户名 +// * @param psw 设备密码 +// */ +// public static int login_V40(String ip, short port, String user, String psw) { +// //注册 +// HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 +// HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 +// +// String m_sDeviceIP = ip;//设备ip地址 +// m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; +// System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); +// +// String m_sUsername = user;//设备用户名 +// m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; +// System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); +// +// String m_sPassword = psw;//设备密码 +// m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; +// System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); +// +// m_strLoginInfo.wPort = port; +// m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 +//// m_strLoginInfo.byLoginMode=1; //ISAPI登录 +// m_strLoginInfo.write(); +// +// int iUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); +// if (iUserID == -1) { +// System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return iUserID; +// } else { +// System.out.println(ip + ":设备登录成功!"); +// return iUserID; +// } +// } +// +// //设备在线状态监测 +// public static void getDeviceStatus(int iUserID) { +// boolean devStatus = hCNetSDK.NET_DVR_RemoteControl(iUserID, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0); +// if (devStatus == false) { +// System.out.println("设备不在线"); +// +// } else { +// System.out.println("设备在线"); +// } +// } +// +// //PC电脑有多网卡,绑定网卡,指定使用的实际网卡 +// public static void getIP() { +// HCNetSDK.BYTE_TWODIM[] struByteArray = new HCNetSDK.BYTE_TWODIM[16]; +// IntByReference pInt = new IntByReference(0); +// boolean pEnableBind = false; +// if (!hCNetSDK.NET_DVR_GetLocalIP(struByteArray, pInt, pEnableBind)) { +// System.out.println("NET_DVR_GetLocalIP失败,错误号:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// int inum = pInt.getValue(); +// for (int i = 0; i < inum; i++) { +// System.out.println("网卡序号:" + i + ", 网卡IP: " + new String(struByteArray[i].strIP).trim()); +// +////选择需要绑定的网卡 +// if ("10.16.36.23".equals(new String(struByteArray[i].strIP))) { +// hCNetSDK.NET_DVR_SetValidIP(i, true); +// } +// } +// } +// } +// +// //设备抓图 +// public void circleGetPic(int iUserID) { +// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); +//// String curTime0 = sdf.format(new Date()); +// Boolean result = false; +// int count = 0; +// while (!result) { +// try { +// Thread.sleep(1 * 1000); //设置暂停的时间 5 秒 +// String curTime0 = sdf.format(new Date()); +// count++; +// String filename = "C:\\PIC\\" + curTime0 + count + ".jpg"; +// byte[] fileByte = filename.getBytes("UTF-8"); +// HCNetSDK.BYTE_ARRAY byte_array = new HCNetSDK.BYTE_ARRAY(fileByte.length); +// byte_array.read(); +// byte_array.byValue = fileByte; +// byte_array.write(); +// +// HCNetSDK.NET_DVR_JPEGPARA strJpegParm = new HCNetSDK.NET_DVR_JPEGPARA(); +// strJpegParm.read(); +// strJpegParm.wPicSize = 2; +// strJpegParm.wPicQuality = 0; +// Pointer pStrjPegParm = strJpegParm.getPointer(); +// strJpegParm.write(); +// boolean b_Cap = hCNetSDK.NET_DVR_CaptureJPEGPicture(iUserID, 1, strJpegParm, fileByte); +// if (b_Cap == false) { +// System.out.println("抓图失败,错误码为:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// System.out.println(sdf.format(new Date()) + "--循环执行第" + count + "次"); +// if (count == 3) { +// result = true; +// break; +// } +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// } +// } +// +// //端口绑定 +// public void bindPort() { +// HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG strLocalTcpBind = new HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG(); +// strLocalTcpBind.read(); +// strLocalTcpBind.wLocalBindTcpMinPort = 30000; +// strLocalTcpBind.wLocalBindTcpMaxPort = 30200; +// strLocalTcpBind.write(); +// Pointer pStrLocalTcoBind = strLocalTcpBind.getPointer(); +// if (hCNetSDK.NET_DVR_SetSDKLocalCfg(0, pStrLocalTcoBind) == false) { +// System.out.println("绑定失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// } +// System.out.println("绑定成功"); +// } +// +// //获取设备的基本参数 +// public static void getCfg(int iUserID) { +// HCNetSDK.NET_DVR_DEVICECFG_V40 m_strDeviceCfg = new HCNetSDK.NET_DVR_DEVICECFG_V40(); +// m_strDeviceCfg.dwSize = m_strDeviceCfg.size(); +// m_strDeviceCfg.write(); +// Pointer pStrDeviceCfg = m_strDeviceCfg.getPointer(); +// IntByReference pInt = new IntByReference(0); +// boolean b_GetCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_DEVICECFG_V40, +// 0Xffffffff, pStrDeviceCfg, m_strDeviceCfg.dwSize, pInt); +// if (b_GetCfg == false) { +// System.out.println("获取参数失败 错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// System.out.println("获取参数成功"); +// m_strDeviceCfg.read(); +// System.out.println("设备名称:" + new String(m_strDeviceCfg.sDVRName).trim() + "设备序列号:" + new String(m_strDeviceCfg.sSerialNumber)); +// System.out.println("模拟通道个数" + m_strDeviceCfg.byChanNum); +// parseVersion(m_strDeviceCfg.dwSoftwareVersion); +// parseBuildTime(m_strDeviceCfg.dwSoftwareBuildDate); +// parseDSPBuildDate(m_strDeviceCfg.dwDSPSoftwareBuildDate); +// +// } +// +// +// public static void parseBuildTime(int buildTime) { +// int year = ((buildTime & 0XFF << 16) >> 16) + 2000; +// int month = (buildTime & 0XFF << 8) >> 8; +// int data = buildTime & 0xFF; +// System.out.println("Build:" + year + "." + month + "." + data); +// +// +// } +// +// public static void parseDSPBuildDate(int DSPBuildDate) { +// int year = ((DSPBuildDate & 0XFF << 16) >> 16) + 2000; +// int month = (DSPBuildDate & 0XFF << 8) >> 8; +// int data = DSPBuildDate & 0xFF; +// System.out.println("DSPBuildDate:" + year + "." + month + "." + data); +// +// +// } +// +// //设备版本解析 +// public static void parseVersion(int version) { +// int firstVersion = (version & 0XFF << 24) >> 24; +// int secondVersion = (version & 0XFF << 16) >> 16; +// int lowVersion = version & 0XFF; +// +// System.out.println("firstVersion:" + firstVersion); +// System.out.println("secondVersion:" + secondVersion); +// System.out.println("lowVersion:" + lowVersion); +// } +// +// //获取设备时间参数 +// public void getDevTime(int iUserID) { +// HCNetSDK.NET_DVR_TIME m_Time = new HCNetSDK.NET_DVR_TIME(); +// Pointer pTime = m_Time.getPointer(); +// IntByReference pInt = new IntByReference(0); +// boolean b_GetTime = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_TIMECFG, 0xffffffff, pTime, m_Time.size(), pInt); +// if (b_GetTime == false) { +// System.out.println("获取时间参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// m_Time.read(); +// System.out.println("年:" + m_Time.dwYear + "月:" + m_Time.dwMonth + "日:" + m_Time.dwDay + "时:" + m_Time.dwHour + +// "分:" + m_Time.dwMinute + "秒:" + m_Time.dwSecond); +// } +// +// //获取设备的图像参数-移动侦测高亮显示 +// public static void getPicCfg(int iUserID) { +// HCNetSDK.NET_DVR_PICCFG_V40 strPicCfg = new HCNetSDK.NET_DVR_PICCFG_V40(); +// strPicCfg.dwSize = strPicCfg.size(); +// Pointer pStrPicCfg = strPicCfg.getPointer(); +// NativeLong lChannel = new NativeLong(18); +// 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(); +// System.out.println("通道号:" + lChannel); +// System.out.println("通道名称:" + strPicCfg.sChanName); +// System.out.println("预览的图像是否显示OSD:" + strPicCfg.dwShowOsd); +// System.out.println("移动侦测高亮显示是否开启:" + strPicCfg.struMotion.byEnableDisplay); +// strPicCfg.read(); +// strPicCfg.struMotion.byEnableDisplay = 0; +// strPicCfg.write(); +// +// boolean b_SetPicCfg = hCNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_PICCFG_V40, lChannel.intValue(), +// pStrPicCfg, strPicCfg.size()); +// if (b_SetPicCfg == false) { +// System.out.println("设置图像参数移动侦测高亮参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// System.out.println("设置移动侦测高亮参数成功"); +// +// } +// } +// +// //获取用户参数 +// public static void getUsrCfg(int iUserID) throws UnsupportedEncodingException { +// HCNetSDK.NET_DVR_USER_V30 usercfg = new HCNetSDK.NET_DVR_USER_V30(); +// usercfg.dwSize = usercfg.size(); +// Pointer pUserCfg = usercfg.getPointer(); +// NativeLong lChannel = new NativeLong(1); +// IntByReference pInt = new IntByReference(0); +// boolean b_GetUserCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_USERCFG_V30, lChannel.intValue(), +// pUserCfg, usercfg.size(), pInt); +// if (b_GetUserCfg == false) { +// System.out.println("获取用户参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// usercfg.read(); +// //System.out.println("用户名称:" + usercfg.struUser[1].sUserName); +// System.out.println("name: " + new String(usercfg.struUser[0].sUserName, "GBK").trim()); +// System.out.println("password: " + new String(usercfg.struUser[0].sPassword, "GBK").trim()); +// +// } +// +// //网络流量检测 +// public void netFlowDec(int iUserID) throws InterruptedException { +// HCNetSDK.NET_DVR_FLOW_TEST_PARAM struFlowPam = new HCNetSDK.NET_DVR_FLOW_TEST_PARAM(); +// struFlowPam.read(); +// struFlowPam.dwSize = struFlowPam.size(); +// struFlowPam.lCardIndex = 0; +// struFlowPam.dwInterval = 1; +// struFlowPam.write(); +// Pointer pUser = null; +// if (flowcallback == null) { +// flowcallback = new flowTestcallback(); +// } +// int FlowHandle = hCNetSDK.NET_DVR_StartNetworkFlowTest(iUserID, struFlowPam, flowcallback, pUser); +// if (FlowHandle <= -1) { +// System.out.println("开启流量检测失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// System.out.println("开启流量检测成功"); +// } +// Thread.sleep(20000); +// hCNetSDK.NET_DVR_StopNetworkFlowTest(FlowHandle); +// } +// +// //录像起止时间查询 +// public static void searchRecordTime(int iUserID) { +// HCNetSDK.NET_DVR_RECORD_TIME_SPAN_INQUIRY struRecInq = new HCNetSDK.NET_DVR_RECORD_TIME_SPAN_INQUIRY(); +// struRecInq.read(); +// struRecInq.dwSize = struRecInq.size(); +// struRecInq.byType = 0; +// struRecInq.write(); +// HCNetSDK.NET_DVR_RECORD_TIME_SPAN struRecSpan = new HCNetSDK.NET_DVR_RECORD_TIME_SPAN(); +// //通道号说明:一般IPC/IPD通道号为1,32路以及以下路数的NVR的IP通道通道号从33开始,64路及以上路数的NVR的IP通道通道号从1开始。 +// if (hCNetSDK.NET_DVR_InquiryRecordTimeSpan(iUserID, 35, struRecInq, struRecSpan) == false) { +// System.out.println("录像起止时间查询失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// System.out.println("录像起止时间查询成功"); +// struRecSpan.read(); +// System.out.println("开启时间:" + "年:" + struRecSpan.strBeginTime.dwYear + "\n"); +// System.out.println("开启时间:" + "月:" + struRecSpan.strBeginTime.dwMonth + "\n"); +// System.out.println("开启时间:" + "日:" + struRecSpan.strBeginTime.dwDay + "\n"); +// System.out.println("开启时间:" + "时:" + struRecSpan.strBeginTime.dwHour + "\n"); +// System.out.println("停止时间:" + "年:" + struRecSpan.strEndTime.dwYear + "\n"); +// System.out.println("停止时间:" + "月:" + struRecSpan.strEndTime.dwMonth + "\n"); +// System.out.println("停止时间:" + "日:" + struRecSpan.strEndTime.dwDay + "\n"); +// System.out.println("停止时间:" + "时:" + struRecSpan.strEndTime.dwHour + "\n"); +// } +// } +// +// //月历录像查询 +// public static void getRecMonth(int iUserID) { +// HCNetSDK.NET_DVR_MRD_SEARCH_PARAM struMrdSeaParam = new HCNetSDK.NET_DVR_MRD_SEARCH_PARAM(); +// struMrdSeaParam.read(); +// struMrdSeaParam.dwSize = struMrdSeaParam.size(); +// struMrdSeaParam.wYear = 2021; +// struMrdSeaParam.byMonth = 1; +// //通道号说明:一般IPC/IPD通道号为1,32路以及以下路数的NVR的IP通道通道号从33开始,64路及以上路数的NVR的IP通道通道号从1开始。 +// struMrdSeaParam.struStreamInfo.dwChannel = 33; +// struMrdSeaParam.write(); +// HCNetSDK.NET_DVR_MRD_SEARCH_RESULT struMrdSeaResu = new HCNetSDK.NET_DVR_MRD_SEARCH_RESULT(); +// struMrdSeaResu.read(); +// struMrdSeaResu.dwSize = struMrdSeaResu.size(); +// struMrdSeaResu.write(); +// IntByReference list = new IntByReference(0); +// boolean b_GetResult = hCNetSDK.NET_DVR_GetDeviceConfig(iUserID, HCNetSDK.NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION, 0, struMrdSeaParam.getPointer(), +// struMrdSeaParam.size(), list.getPointer(), struMrdSeaResu.getPointer(), struMrdSeaResu.size()); +// if (b_GetResult == false) { +// System.out.println("月历录像查询失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// struMrdSeaResu.read(); +// for (int i = 0; i <= 32; i++) { +// int day = i + 1; +// System.out.println("" + day + "号是否录像文件" + struMrdSeaResu.byRecordDistribution[i]); +// } +// } +// } +// +// //球机GIS信息获取 +// public static void getGisInfo(int iUserID) { +// HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); +// HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); +// struStdCfg.read(); +// IntByReference lchannel = new IntByReference(1); +// struStdCfg.lpCondBuffer = lchannel.getPointer(); +// struStdCfg.dwCondSize = 4; +// struStdCfg.lpOutBuffer = struGisInfo.getPointer(); +// struStdCfg.dwOutSize = struGisInfo.size(); +// struStdCfg.write();//设置前之前要write() +// boolean getSTDConfig = hCNetSDK.NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_GISINFO, struStdCfg); +// if (getSTDConfig == false) { +// System.out.println("查询GIS信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// struGisInfo.read(); +// System.out.println("查询成功\n"); +// System.out.println(struGisInfo.struPtzPos.fPanPos + "\n"); +// System.out.println(struGisInfo.struPtzPos.fTiltPos + "\n"); +// System.out.println(struGisInfo.struPtzPos.fZoomPos + "\n"); +// System.out.println(struGisInfo.fHorizontalValue); +// System.out.println(struGisInfo.fVerticalValue); +// } +// +// } +// +// //球机PTZ参数获取设置 +// public static void setPTZcfg(int iUserID) { +// HCNetSDK.NET_DVR_PTZPOS struPtTZPos = new HCNetSDK.NET_DVR_PTZPOS(); +// IntByReference pUsers = new IntByReference(1); +// boolean b_GetPTZ = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PTZPOS, 1, struPtTZPos.getPointer(), struPtTZPos.size(), pUsers); +// if (b_GetPTZ == false) { +// System.out.println("获取PTZ坐标信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// struPtTZPos.read(); +// int wPanPos = Integer.parseInt(Integer.toHexString(struPtTZPos.wPanPos).trim()); +// float WPanPos = wPanPos * 0.1f; +// int wTiltPos = Integer.parseInt(Integer.toHexString(struPtTZPos.wTiltPos).trim()); +// float WTiltPos = wTiltPos * 0.1f; +// int wZoomPos = Integer.parseInt(Integer.toHexString(struPtTZPos.wZoomPos).trim()); +// float WZoomPos = wZoomPos * 0.1f; +// System.out.println("P参数:" + WPanPos + "\n"); +// System.out.println("T参数:" + wTiltPos + "\n"); +// System.out.println("Z参数:" + wZoomPos + "\n"); +// } +//// struPtTZPos.wAction = 2; +// //本结构体中的wAction参数是设置时的操作类型,因此获取时该参数无效。实际显示的PTZ值是获取到的十六进制值的十分之一, +// // 如获取的水平参数P的值是0x1750,实际显示的P值为175度;获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度,如果T未负值,获取的值减去360 +// // 获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。 +//// String pHex="13669"; +//// int pInter=Integer.parseInt(pHex); +//// short pInter = 13669; +//// System.out.println(pInter); +//// struPtTZPos.wPanPos = (short) pInter; +//// struPtTZPos.write(); +//// boolean b_SetPTZ = hCNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_PTZPOS, 1, struPtTZPos.getPointer(), struPtTZPos.size()); +//// if (b_GetPTZ == false) { +//// System.out.println("设置PTZ坐标信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +//// } else { +//// +//// System.out.println("设置PTZ成功"); +//// } +// +// } +// +// //设置云台锁定信息 +// public static void setPTZLOCKCFG(int iUserID) { +// HCNetSDK.NET_DVR_PTZ_LOCKCFG struPtzLockCfg = new HCNetSDK.NET_DVR_PTZ_LOCKCFG(); +// struPtzLockCfg.dwSize = struPtzLockCfg.size(); +// Pointer pStrPtzLockCfg = struPtzLockCfg.getPointer(); +// NativeLong lChannel = new NativeLong(1); +// IntByReference pInt = new IntByReference(0); +// boolean b_GetPtzLockCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_PTZLOCKCFG, lChannel.intValue(), +// pStrPtzLockCfg, struPtzLockCfg.size(), pInt); +// if (b_GetPtzLockCfg == false) { +// System.out.println("获取云台锁定信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// struPtzLockCfg.read(); +// System.out.println("通道号:" + lChannel); +// System.out.println("云台锁定控制状态为:" + struPtzLockCfg.byWorkMode); +// +// struPtzLockCfg.read(); +// struPtzLockCfg.byWorkMode = 1; //0- 解锁,1- 锁定 +// struPtzLockCfg.write(); +// boolean b_SetPtzLockCfg = hCNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_PTZLOCKCFG, lChannel.intValue(), +// pStrPtzLockCfg, struPtzLockCfg.size()); +// if (b_SetPtzLockCfg == false) { +// System.out.println("设置云台锁定信息失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } else { +// System.out.println("设置云台锁定信息成功"); +// System.out.println("云台锁定控制状态当前为:" + struPtzLockCfg.byWorkMode); +// } +// } +// +//// public static void PTZControlOther(int iUserID){ +//// boolean b_ptzcontrol=hCNetSDK.NET_DVR_PTZControl_Other(iUserID,1,HCNetSDK.TILT_UP,0); +//// +//// if( b_ptzcontrol==false){ +//// System.out.println("云台向上转动失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +//// }else{ +//// System.out.println("设置向上转动成功"); +//// } +// +// // } +// +// //获取(设置)前端参数(扩展) +// public static void getCameraPara(int iUserID) { +// HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX(); +// Pointer pstruCameraParam = struCameraParam.getPointer(); +// IntByReference ibrBytesReturned = new IntByReference(0); +// boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_CCDPARAMCFG_EX, 1, pstruCameraParam, struCameraParam.size(), ibrBytesReturned); +// if (!b_GetCameraParam) { +// System.out.println("获取前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// struCameraParam.read(); +// System.out.println("是否开启旋转:" + struCameraParam.struCorridorMode.byEnableCorridorMode); +// +// struCameraParam.struCorridorMode.byEnableCorridorMode = 1; +// struCameraParam.write(); +// boolean b_SetCameraParam = hCNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_CCDPARAMCFG_EX, 1, pstruCameraParam, struCameraParam.size()); +// if (!b_SetCameraParam) { +// System.out.println("设置前端参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// struCameraParam.read(); +// System.out.println("设置成功"); +// } +// +// //获取快球聚焦模式信息。 +// public static void getFocusMode(int iUserID) { +// HCNetSDK.NET_DVR_FOCUSMODE_CFG struFocusMode = new HCNetSDK.NET_DVR_FOCUSMODE_CFG(); +// struFocusMode.read(); +// struFocusMode.dwSize = struFocusMode.size(); +// struFocusMode.write(); +// Pointer pFocusMode = struFocusMode.getPointer(); +// IntByReference ibrBytesReturned = new IntByReference(0); +// boolean b_GetCameraParam = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_FOCUSMODECFG, 1, pFocusMode, struFocusMode.size(), ibrBytesReturned); +// if (!b_GetCameraParam) { +// System.out.println("获取快球聚焦模式失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// struFocusMode.read(); +// System.out.println("聚焦模式:" + struFocusMode.byFocusMode); +// struFocusMode.byFocusMode = 1; +// struFocusMode.byFocusDefinitionDisplay = 1; +// struFocusMode.byFocusSpeedLevel = 3; +// struFocusMode.write(); +// boolean b_SetCameraParam = hCNetSDK.NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_FOCUSMODECFG, 1, pFocusMode, struFocusMode.size()); +// if (!b_SetCameraParam) { +// System.out.println("设置快球聚焦模式失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// struFocusMode.read(); +// System.out.println("设置成功"); +// } +// +// //获取IP通道 +// public static void getIPChannelInfo(int iUserID) throws UnsupportedEncodingException { +// 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(); +// System.out.println("起始数字通道号:" + m_strIpparaCfg.dwStartDChan); +// +// for (int iChannum = 0; iChannum < m_strIpparaCfg.dwDChanNum; 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(); +// +// System.out.println("--------------第" + (iChannum + 1) + "个通道------------------"); +// int channel = m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPID + m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byIPIDHigh * 256; +// System.out.println("channel:" + channel); +// if (channel > 0) { +// System.out.println("ip: " + new String(m_strIpparaCfg.struIPDevInfo[channel - 1].struIP.sIpV4).trim()); +// } +// System.out.println("name: " + new String(strPicCfg.sChanName, "GBK").trim()); +// if (m_strIpparaCfg.struStreamMode[iChannum].uGetStream.struChanInfo.byEnable == 1) { +// System.out.println("IP通道" + channum + "在线"); +// +// } else { +// +// System.out.println("IP通道" + channum + "不在线"); +// +// } +// } +// } +// } +// +// //定时巡检设备 +// public static void regularInspection() { +// HCNetSDK.NET_DVR_CHECK_DEV_STATE struCheckStatus = new HCNetSDK.NET_DVR_CHECK_DEV_STATE(); +// struCheckStatus.read(); +// struCheckStatus.dwTimeout = 1000; //定时检测设备工作状态,单位:ms,0表示使用默认值(30000),最小值为1000 +// if (workStateCb == null) { +// workStateCb = new dev_work_state_cb(); +// } +// struCheckStatus.fnStateCB = workStateCb; +// struCheckStatus.write(); +// boolean b_state = hCNetSDK.NET_DVR_StartGetDevState(struCheckStatus); +// if (!b_state) { +// System.out.println("定时巡检设备状态失败:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// } +// +// //获取高精度PTZ绝对位置配置,一般热成像设备支持 +// public static void getPTZAbsoluteEx(int iUserID) { +// HCNetSDK.NET_DVR_STD_CONFIG struSTDcfg = new HCNetSDK.NET_DVR_STD_CONFIG(); +// HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG struPTZ = new HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG(); +// struSTDcfg.read(); +// IntByReference channel = new IntByReference(1); +// struSTDcfg.lpCondBuffer = channel.getPointer(); +// struSTDcfg.dwCondSize = 4; +// struSTDcfg.lpOutBuffer = struPTZ.getPointer(); +// struSTDcfg.dwOutSize = struPTZ.size(); +// struSTDcfg.lpInBuffer = Pointer.NULL; +// struSTDcfg.dwInSize = 0; +// struSTDcfg.write(); +// boolean bGetPTZ = hCNetSDK.NET_DVR_GetSTDConfig(iUserID, HCNetSDK.NET_DVR_GET_PTZABSOLUTEEX, struSTDcfg); +// if (bGetPTZ == false) { +// System.out.println("获取PTZ参数错误,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// struPTZ.read(); +// System.out.println("焦距范围:" + struPTZ.dwFocalLen); +// System.out.println("聚焦参数:" + struPTZ.struPTZCtrl.dwFocus); +// return; +// } +// +// //获取GB28181参数 +// public static void getGB28181Info(int iUserID) { +// +// HCNetSDK.NET_DVR_STREAM_INFO streamInfo = new HCNetSDK.NET_DVR_STREAM_INFO(); +// streamInfo.read(); +// streamInfo.dwSize = streamInfo.size(); //设置结构体大小 +// streamInfo.dwChannel = 1; //设置通道 +// streamInfo.write(); +// Pointer lpInBuffer = streamInfo.getPointer(); +// HCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG gbt28181ChaninfoCfg = new HCNetSDK.NET_DVR_GBT28181_CHANINFO_CFG(); +// gbt28181ChaninfoCfg.read(); +// gbt28181ChaninfoCfg.dwSize = gbt28181ChaninfoCfg.size(); +// gbt28181ChaninfoCfg.write(); +// Pointer lpOutBuffer = gbt28181ChaninfoCfg.getPointer(); +// IntByReference lpBytesReturned = new IntByReference(0); +// //3251对应它的宏定义 +// boolean bRet = hCNetSDK.NET_DVR_GetDeviceConfig(iUserID, 3251, 1, lpInBuffer, +// streamInfo.size(), lpBytesReturned.getPointer(), lpOutBuffer, gbt28181ChaninfoCfg.size()); +// gbt28181ChaninfoCfg.read(); +// +// if (bRet == false) { +// System.out.println("获取失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// } +// +// //获取码流加密信息 +// public static void getAESInfo(int iUserID) { +// HCNetSDK.NET_DVR_AES_KEY_INFO net_dvr_aes_key_info = new HCNetSDK.NET_DVR_AES_KEY_INFO(); +// net_dvr_aes_key_info.read(); +// Pointer pnet_dvr_aes_key_info = net_dvr_aes_key_info.getPointer(); +// IntByReference pInt = new IntByReference(0); +// boolean b_GetCfg = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_AES_KEY, +// 0Xffffffff, pnet_dvr_aes_key_info, net_dvr_aes_key_info.size(), pInt); +// if (b_GetCfg == false) { +// System.out.println("获取码流加密失败 错误码:" + hCNetSDK.NET_DVR_GetLastError()); +// } +// System.out.println("获取码流加密信息成功"); +// +// +// } +// +// //设置球机预置点 +// public static void getCruisePoint(int iUserID) { +// HCNetSDK.NET_DVR_CRUISEPOINT_COND struCruisepointCond = new HCNetSDK.NET_DVR_CRUISEPOINT_COND(); +// struCruisepointCond.read(); +// struCruisepointCond.dwSize = struCruisepointCond.size(); +// struCruisepointCond.dwChan = 1; +// struCruisepointCond.wRouteNo = 1; +// struCruisepointCond.write(); +// +// HCNetSDK.NET_DVR_CRUISEPOINT_V50 struCruisepointV40 = new HCNetSDK.NET_DVR_CRUISEPOINT_V50(); +// struCruisepointV40.read(); +// struCruisepointV40.dwSize = struCruisepointV40.size(); +// struCruisepointV40.write(); +// +// // 错误信息列表 +// IntByReference pInt = new IntByReference(0); +// Pointer lpStatusList = pInt.getPointer(); +// +// boolean flag = hCNetSDK.NET_DVR_GetDeviceConfig(iUserID, 6714, 1, +// struCruisepointCond.getPointer(), struCruisepointCond.size(), lpStatusList, struCruisepointV40.getPointer(), struCruisepointV40.size()); +// if (flag == false) { +// int iErr = hCNetSDK.NET_DVR_GetLastError(); +// System.out.println("NET_DVR_STDXMLConfig失败,错误号:" + iErr); +// return; +// } +// struCruisepointV40.read(); +// +// +// } +// +// //抓图保存到缓冲区 +// public static void getPictoPointer(int iUserID) { +// HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(); +// jpegpara.read(); +// jpegpara.wPicSize = 255; +// jpegpara.wPicQuality = 0; +// jpegpara.write(); +// HCNetSDK.BYTE_ARRAY byte_array = new HCNetSDK.BYTE_ARRAY(10 * 1024 * 1024); +// IntByReference ret = new IntByReference(0); +// boolean b = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(iUserID, 1, jpegpara, byte_array.getPointer(), byte_array.size(), ret); +// if (b == false) { +// System.out.println("抓图失败:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// byte_array.read(); +// System.out.println("抓图成功"); +// return; +// } +// +// /** +// * 获取报警主机RS485参数 +// * +// * @param lUserID +// */ +// public static void getRs485Cfg(int lUserID) { +// HCNetSDK.NET_DVR_ALARM_RS485CFG rs485CFG = new HCNetSDK.NET_DVR_ALARM_RS485CFG(); +// rs485CFG.dwSize = rs485CFG.size(); +// Pointer pointer = rs485CFG.getPointer(); +// IntByReference pInt1 = new IntByReference(0); +// rs485CFG.write(); +// boolean bGetRs485 = hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ALARM_RS485CFG, 3, pointer, rs485CFG.dwSize, pInt1); +// if (!bGetRs485) { +// System.out.println("获取报警主机RS485参数失败!错误号:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// rs485CFG.read(); +// return; +// +// } +// +// public static void getRs485SlotInfo(int iUserID) { +// HCNetSDK.NET_DVR_ALARMHOST_RS485_SLOT_CFG strRs485SlotCFG = new HCNetSDK.NET_DVR_ALARMHOST_RS485_SLOT_CFG(); +// strRs485SlotCFG.dwSize = strRs485SlotCFG.size(); +// Pointer pRs485SlotCFG = strRs485SlotCFG.getPointer(); +// IntByReference pInt1 = new IntByReference(0); +// strRs485SlotCFG.write(); +// String Schannel = "0000000100000001"; //高2字节表示485通道号,低2字节表示槽位号,都从1开始 +// int channel = Integer.parseInt(Schannel, 2); +// boolean bRs485Slot = hCNetSDK.NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG, channel, pRs485SlotCFG, strRs485SlotCFG.dwSize, pInt1); +// if (!bRs485Slot) { +// System.out.println("获取报警主机RS485槽位参数失败!错误号:" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } +// strRs485SlotCFG.read(); +// return; +// +// } +// +// +//} +// +// diff --git a/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java b/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java index e8a3943..ffe84e3 100644 --- a/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java +++ b/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java @@ -1,12 +1,14 @@ package com.shxy.xyhkcamera; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @Slf4j +@MapperScan("com.shxy") public class XyhkcameraApplication { public static void main(String[] args) { diff --git a/src/main/java/com/shxy/xyhkcamera/alarm/Alarm.java b/src/main/java/com/shxy/xyhkcamera/alarm/Alarm.java new file mode 100644 index 0000000..08eea49 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/alarm/Alarm.java @@ -0,0 +1,362 @@ +// +// +//package com.shxy.xyhkcamera.alarm; +// +// +//import CommonMethod.osSelect; +//import com.shxy.xyhkcamera.HCNetSDK; +//import com.sun.jna.Native; +//import com.sun.jna.Pointer; +// +//import java.util.Scanner; +// +// +//public class Alarm { +// +// static HCNetSDK hCNetSDK = null; +// static int lUserID = -1;//用户句柄 实现对设备登录 +// static int lAlarmHandle =-1;//报警布防句柄 +// static int lAlarmHandle_V50 = -1; //v50报警布防句柄 +// static int lListenHandle = -1;//报警监听句柄 +// static FMSGCallBack_V31 fMSFCallBack_V31 = null; +// static FMSGCallBack fMSFCallBack=null; +// +// +// /** +// * 动态库加载 +// * +// * @return +// */ +// private static boolean createSDKInstance() { +// if (hCNetSDK == null) { +// synchronized (HCNetSDK.class) { +// String strDllPath = ""; +// try { +// if (osSelect.isWindows()) +// //win系统加载库路径 +// strDllPath = System.getProperty("user.dir") + "\\lib\\HCNetSDK.dll"; +// else if (osSelect.isLinux()) +// //Linux系统加载库路径 +//// strDllPath = System.getProperty("user.dir") + "/lib/libhcnetsdk.so"; +// strDllPath = "/lib/linuxx64/HC/libhcnetsdk.so"; +// +// hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class); +// } catch (Exception ex) { +// System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage()); +// return false; +// } +// } +// } +// return true; +// } +// +// +// /** +// * @param args +// */ +// public static void main(String[] args) throws InterruptedException { +// +// if (hCNetSDK == null) { +// if (!createSDKInstance()) { +// System.out.println("Load SDK fail"); +// return; +// } +// } +// //linux系统建议调用以下接口加载组件库 +// if (osSelect.isLinux()) { +// HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256); +// HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256); +// //这里是库的绝对路径,请根据实际情况修改,注意改路径必须有访问权限 +//// String strPath1 = System.getProperty("user.dir") + "/lib/libcrypto.so.1.1"; +//// String strPath2 = System.getProperty("user.dir") + "/lib/libssl.so.1.1"; +// String strPath1 = "/lib/linuxx64/HC/libcrypto.so.1.1"; +// String strPath2 = "/lib/linuxx64/HC/libssl.so.1.1"; +// +// System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length()); +// ptrByteArray1.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer()); +// +// System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length()); +// ptrByteArray2.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer()); +// +//// String strPathCom = System.getProperty("user.dir") + "/lib/"; +// String strPathCom = "/lib/linuxx64/HC/"; +// +// HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); +// System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); +// struComPath.write(); +// hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); +// } +// +// /**初始化*/ +// hCNetSDK.NET_DVR_Init(); +// /**加载日志*/ +// hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false); +// //设置报警回调函数 +// if (fMSFCallBack_V31 == null) { +// fMSFCallBack_V31 = new FMSGCallBack_V31(); +// String UserData="UserData"; +// HCNetSDK.BYTE_ARRAY UserDataByte=new HCNetSDK.BYTE_ARRAY(25); +// UserDataByte.read(); +// UserDataByte.byValue=UserData.getBytes(); +// UserDataByte.write(); +// Pointer pUserDataByte=UserDataByte.getPointer(); +// +// Pointer pUser = null; +// if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUserDataByte)) { +// System.out.println("设置回调函数失败!"); +// return; +// } else { +// System.out.println("设置回调函数成功!"); +// } +// } +// /** 设备上传的报警信息是COMM_VCA_ALARM(0x4993)类型, +// 在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(enumType为NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数NET_DVR_LOCAL_GENERAL_CFG的byAlarmJsonPictureSeparate为1, +// 将Json数据和图片数据分离上传,这样设置之后,报警布防回调函数里面接收到的报警信息类型为COMM_ISAPI_ALARM(0x6009), +// 报警信息结构体为NET_DVR_ALARM_ISAPI_INFO(与设备无关,SDK封装的数据结构),更便于解析。*/ +// +// 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); +// +// Alarm.login_V40( "10.17.36.30", (short) 8000, "admin", "hik12345"); //登录设备 +// +// // test git push +// Alarm.setAlarm();//报警布防,和报警监听二选一即可 +// +//// Alarm.setAlarmV50(); //报警布防V50 +// +//// Alarm.startListen("152.152.0.118",(short)17271);//报警监听,不需要登陆设备 +// while (true) { +// //这里加入控制台输入控制,是为了保持连接状态,当输入Y表示布防结束 +// System.out.print("请选择是否撤出布防(Y/N):\n"); +// Scanner input = new Scanner(System.in); +// String str = input.next(); +// if (str.equals("Y")) { +// break; +// } +// } +// Alarm.logout(); +// //释放SDK +// hCNetSDK.NET_DVR_Cleanup(); +// return; +// } +// +// +// /** +// * 设备登录V40 与V30功能一致 +// * @param ip 设备IP +// * @param port SDK端口,默认设备的8000端口 +// * @param user 设备用户名 +// * @param psw 设备密码 +// */ +// public static void login_V40(String ip, short port, String user, String psw) { +// //注册 +// HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 +// HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 +// +// String m_sDeviceIP = ip;//设备ip地址 +// m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; +// System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); +// +// String m_sUsername = user;//设备用户名 +// m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; +// System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); +// +// String m_sPassword = psw;//设备密码 +// m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; +// System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); +// +// m_strLoginInfo.wPort = port; +// m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 +// m_strLoginInfo.byLoginMode=0; //ISAPI登录 +// m_strLoginInfo.write(); +// +// lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); +// if (lUserID== -1) { +// System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println(ip + ":设备登录成功!"); +// return; +// } +// } +// +// /** +// * 设备登录V30 +// * +// * @param ip 设备IP +// * @param port SDK端口,默认设备的8000端口 +// * @param user 设备用户名 +// * @param psw 设备密码 +// */ +// public static void login_V30(String ip, short port, String user, String psw) { +// HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); +// lUserID = hCNetSDK.NET_DVR_Login_V30(ip, port, user, psw, m_strDeviceInfo); +// System.out.println("UsID:" + lUserID); +// if ((lUserID == -1) || (lUserID == 0xFFFFFFFF)) { +// System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println(ip + ":设备登录成功!"); +// return; +// } +// } +// +// /** +// * 报警布防接口 +// * +// * @param +// */ +// public static void +// setAlarm() { +// if (lAlarmHandle < 0)//尚未布防,需要布防 +// { +// //报警布防参数设置 +// HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); +// m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); +// m_strAlarmInfo.byLevel = 0; //布防等级 +// m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) +// m_strAlarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防 +// m_strAlarmInfo.write(); +// lAlarmHandle= hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); +// System.out.println("lAlarmHandle: " + lAlarmHandle); +// if (lAlarmHandle == -1) { +// System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println("布防成功"); +// +// } +// } else { +// +// System.out.println("设备已经布防,请先撤防!"); +// } +// return; +// +// } +// +// /** +// * 报警布防接口 +// * +// * @param +// */ +// public static void setAlarmV50() { +// if (lAlarmHandle < 0)//尚未布防,需要布防 +// { +// //报警布防参数设置 +// HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50 m_strAlarmInfoV50 = new HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50(); +// m_strAlarmInfoV50.dwSize = m_strAlarmInfoV50.size(); +// m_strAlarmInfoV50.byLevel = 0; //布防等级 +// m_strAlarmInfoV50.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) +// m_strAlarmInfoV50.byRetAlarmTypeV40 =1; //0- 移动侦测、视频丢失、遮挡、IO信号量等报警信息以普通方式上传(报警类型:COMM_ALARM_V30,报警信息结构体:NET_DVR_ALARMINFO_V30), +// // 1- 报警信息以数据可变长方式上传(报警类型:COMM_ALARM_V40,报警信息结构体:NET_DVR_ALARMINFO_V40,设备若不支持则仍以普通方式上传) +// m_strAlarmInfoV50.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防 +// m_strAlarmInfoV50.write(); +// lAlarmHandle= hCNetSDK.NET_DVR_SetupAlarmChan_V50(lUserID, m_strAlarmInfoV50,Pointer.NULL,0); +// System.out.println("lAlarmHandle: " + lAlarmHandle); +// if (lAlarmHandle == -1) { +// System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println("布防成功"); +// +// } +// } else { +// +// System.out.println("设备已经布防,请先撤防!"); +// } +// return; +// +// } +// +// +// /** +// * 报警布防V50接口,功能和V41一致 +// * +// * @param +// */ +// public static void setAlarm_V50() { +// +// if (lAlarmHandle_V50 < 0)//尚未布防,需要布防 +// { +// //报警布防参数设置 +// HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50 m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM_V50(); +// m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); +// m_strAlarmInfo.byLevel = 1; //布防等级 +// m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT) +// m_strAlarmInfo.byDeployType = 1; //布防类型 0:客户端布防 1:实时布防 +// m_strAlarmInfo.write(); +// lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V50(lUserID, m_strAlarmInfo, Pointer.NULL, 0); +// System.out.println("lAlarmHandle: " + lAlarmHandle); +// if (lAlarmHandle== -1) { +// System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println("布防成功"); +// +// } +// +// } else { +// +// System.out.println("设备已经布防,请先撤防!"); +// } +// return; +// +// } +// +// +// /** +// * 开启监听 +// * +// * @param ip 监听IP +// * @param port 监听端口 +// */ +// public static void startListen(String ip, short port) { +// if (fMSFCallBack == null) { +// fMSFCallBack = new FMSGCallBack(); +// } +// lListenHandle = hCNetSDK.NET_DVR_StartListen_V30(ip, port,fMSFCallBack, null); +// if (lListenHandle == -1) { +// System.out.println("监听失败" + hCNetSDK.NET_DVR_GetLastError()); +// return; +// } else { +// System.out.println("监听成功"); +// } +// } +// +// /** +// * 设备撤防,设备注销 +// * +// * @param +// */ +// public static void logout() { +// +// if (lAlarmHandle > -1) { +// if (hCNetSDK.NET_DVR_CloseAlarmChan(lAlarmHandle)) { +// System.out.println("撤防成功"); +// } +// } +// if (lListenHandle > -1) { +// if (hCNetSDK.NET_DVR_StopListen_V30(lListenHandle)) { +// System.out.println("停止监听成功"); +// } +// } +// if (lUserID>-1) +// { +// if (hCNetSDK.NET_DVR_Logout(lUserID)) { +// System.out.println("注销成功"); +// } +// } +// +// +// +// return; +// } +// +// +// +//} diff --git a/src/main/java/com/shxy/xyhkcamera/alarm/AlarmDataParse.java b/src/main/java/com/shxy/xyhkcamera/alarm/AlarmDataParse.java new file mode 100644 index 0000000..d7290fa --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/alarm/AlarmDataParse.java @@ -0,0 +1,1555 @@ +//package com.shxy.xyhkcamera.alarm; +// +//import com.shxy.xyhkcamera.HCNetSDK; +//import com.sun.jna.Pointer; +// +//import java.io.FileNotFoundException; +//import java.io.FileOutputStream; +//import java.io.IOException; +//import java.io.UnsupportedEncodingException; +//import java.nio.ByteBuffer; +//import java.text.SimpleDateFormat; +//import java.util.Date; +// +///** +// * @author jiangxin +// * @create 2022-08-15-18:04 +// */ +//public class AlarmDataParse { +// +// public static void alarmDataHandle(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { +// System.out.println("报警事件类型: lCommand:" + Integer.toHexString(lCommand)); +// String sTime; +// String MonitoringSiteID; +// HCNetSDK.BYTE_ARRAY byte_array1 = new HCNetSDK.BYTE_ARRAY(25); +// byte_array1.write(); +// Pointer pbyte_array1 = byte_array1.getPointer(); +// pbyte_array1.write(0, pUser.getByteArray(0, byte_array1.size()), 0, byte_array1.size()); +// byte_array1.read(); +// System.out.println(new String(byte_array1.byValue).trim()); +// //lCommand是传的报警类型 +// switch (lCommand) { +// case HCNetSDK.COMM_ITS_PLATE_RESULT://交通抓拍结果(新报警信息) +// HCNetSDK.NET_ITS_PLATE_RESULT strItsPlateResult = new HCNetSDK.NET_ITS_PLATE_RESULT(); +// strItsPlateResult.write(); +// Pointer pItsPlateInfo = strItsPlateResult.getPointer(); +// pItsPlateInfo.write(0, pAlarmInfo.getByteArray(0, strItsPlateResult.size()), 0, strItsPlateResult.size()); +// strItsPlateResult.read(); +// try { +// String sLicense = new String(strItsPlateResult.struPlateInfo.sLicense, "GBK"); +// byte VehicleType = strItsPlateResult.byVehicleType; //0-其他车辆,1-小型车,2-大型车,3- 行人触发,4- 二轮车触发,5- 三轮车触发,6- 机动车触发 +// MonitoringSiteID = new String(strItsPlateResult.byMonitoringSiteID); +// System.out.println("车牌号:" + sLicense + ":车辆类型:" + VehicleType + ":布防点编号:" + MonitoringSiteID); +// } catch (UnsupportedEncodingException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// /** +// * 报警图片保存,车牌,车辆图片 +// */ +// for (int i = 0; i < strItsPlateResult.dwPicNum; i++) { +// if (strItsPlateResult.struPicInfo[i].dwDataLen > 0) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_type[" + strItsPlateResult.struPicInfo[i].byType + "]_ItsPlate.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strItsPlateResult.struPicInfo[i].pBuffer.getByteBuffer(offset, strItsPlateResult.struPicInfo[i].dwDataLen); +// byte[] bytes = new byte[strItsPlateResult.struPicInfo[i].dwDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// } +// break; +// case HCNetSDK.COMM_ALARM_TFS: //道路违章取证报警 +// HCNetSDK.NET_DVR_TFS_ALARM strTfsAlarm = new HCNetSDK.NET_DVR_TFS_ALARM(); +// strTfsAlarm.write(); +// Pointer pTfsAlarm = strTfsAlarm.getPointer(); +// pTfsAlarm.write(0, pAlarmInfo.getByteArray(0, strTfsAlarm.size()), 0, strTfsAlarm.size()); +// strTfsAlarm.read(); +// sTime = com.shxy.xyhkcamera.utils.CommonUtil.parseTime(strTfsAlarm.dwAbsTime); //报警绝对时间 +// int IllegalType = strTfsAlarm.dwIllegalType; // 违章类型 +// MonitoringSiteID = strTfsAlarm.byMonitoringSiteID.toString(); //布防点编号 +// // 车牌信息 +// try { +// String PlateInfo = "车牌号:" + new String(strTfsAlarm.struPlateInfo.sLicense, "GBK"); +// System.out.println("【道路违章取证报警】时间:" + sTime + "违章类型:" + IllegalType + "车牌信息:" + PlateInfo); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// //报警图片信息 +// for (int i = 0; i < strTfsAlarm.dwPicNum; i++) { +// if (strTfsAlarm.struPicInfo[i].dwDataLen > 0) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_type[" + strTfsAlarm.struPicInfo[i].byType + "]_TfsPlate.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strTfsAlarm.struPicInfo[i].pBuffer.getByteBuffer(offset, strTfsAlarm.struPicInfo[i].dwDataLen); +// byte[] bytes = new byte[strTfsAlarm.struPicInfo[i].dwDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// } +// break; +// case HCNetSDK.COMM_ALARM_AID_V41: //道路事件检测 +// HCNetSDK.NET_DVR_AID_ALARM_V41 strAIDAlarmV41 = new HCNetSDK.NET_DVR_AID_ALARM_V41(); +// strAIDAlarmV41.write(); +// Pointer pstrAIDAlarmV41 = strAIDAlarmV41.getPointer(); +// pstrAIDAlarmV41.write(0, pAlarmInfo.getByteArray(0, strAIDAlarmV41.size()), 0, strAIDAlarmV41.size()); +// strAIDAlarmV41.read(); +// sTime = com.shxy.xyhkcamera.utils.CommonUtil.parseTime(strAIDAlarmV41.dwAbsTime); //报警触发绝对时间 +// MonitoringSiteID = strAIDAlarmV41.byMonitoringSiteID.toString(); //布防点编号 +// int AIDType = strAIDAlarmV41.struAIDInfo.dwAIDType; // 交通事件类型 +// int AIDTypeEx = strAIDAlarmV41.struAIDInfo.dwAIDTypeEx; //交通事件类型扩展 +// System.out.println("【道路事件检测】" + "时间:" + sTime + "布防点:" + MonitoringSiteID + "交通事件类型:" + AIDType + "交通事件类型扩展:" + AIDTypeEx); +// //报警图片信息 +// if (strAIDAlarmV41.dwPicDataLen > 0 && strAIDAlarmV41.pImage != null) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_AIDalarm.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strAIDAlarmV41.pImage.getByteBuffer(offset, strAIDAlarmV41.dwPicDataLen); +// byte[] bytes = new byte[strAIDAlarmV41.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case HCNetSDK.COMM_ALARM_TPS_V41://交通数据统计的报警 +// HCNetSDK.NET_DVR_TPS_ALARM_V41 strTPSalarmV41 = new HCNetSDK.NET_DVR_TPS_ALARM_V41(); +// strTPSalarmV41.write(); +// Pointer pstrTPSalarmV41 = strTPSalarmV41.getPointer(); +// pstrTPSalarmV41.write(0, pAlarmInfo.getByteArray(0, strTPSalarmV41.size()), 0, strTPSalarmV41.size()); +// strTPSalarmV41.read(); +// sTime = com.shxy.xyhkcamera.utils.CommonUtil.parseTime(strTPSalarmV41.dwAbsTime); +// MonitoringSiteID = strTPSalarmV41.byMonitoringSiteID.toString(); //布防点编号 +// String StartTime = com.shxy.xyhkcamera.utils.CommonUtil.parseTime(strTPSalarmV41.dwStartTime); //开始统计时间; +// String StopTime = com.shxy.xyhkcamera.utils.CommonUtil.parseTime(strTPSalarmV41.dwStopTime); //结束统计时间; +// System.out.println("【交通数据统计】" + "时间:" + sTime + "布防点编号:" + MonitoringSiteID + "开始统计时间:" + StartTime + "结束统计时间:" + StopTime); +// //车道统计参数信息 +// for (int i = 0; i <= HCNetSDK.MAX_TPS_RULE; i++) { +// byte LaneNo = strTPSalarmV41.struTPSInfo.struLaneParam[i].byLaneNo; //车道号 +// byte TrafficState = strTPSalarmV41.struTPSInfo.struLaneParam[i].byTrafficState; //车道状态 0-无效,1-畅通,2-拥挤,3-堵塞 +// int TpsType = strTPSalarmV41.struTPSInfo.struLaneParam[i].dwTpsType; //数据变化类型标志,表示当前上传的统计参数中,哪些数据有效,按位区分 +// int LaneVolume = strTPSalarmV41.struTPSInfo.struLaneParam[i].dwLaneVolume; //车道流量 +// int LaneVelocity = strTPSalarmV41.struTPSInfo.struLaneParam[i].dwLaneVelocity; //车道平均速度 +// float SpaceOccupyRation = strTPSalarmV41.struTPSInfo.struLaneParam[i].fSpaceOccupyRation; //车道占有率,百分比计算(空间上,车辆长度与布防路段总长度的比值) +// System.out.println("车道号:" + LaneNo + "车道状态:" + TrafficState + "车道流量:" + LaneVolume + "车道占有率:" + SpaceOccupyRation + "\n"); +// } +// break; +// case HCNetSDK.COMM_ALARM_TPS_REAL_TIME: //实时过车数据数据 +// HCNetSDK.NET_DVR_TPS_REAL_TIME_INFO netDvrTpsParam = new HCNetSDK.NET_DVR_TPS_REAL_TIME_INFO(); +// netDvrTpsParam.write(); +// Pointer pItsParkVehicle = netDvrTpsParam.getPointer(); +// pItsParkVehicle.write(0, pAlarmInfo.getByteArray(0, netDvrTpsParam.size()), 0, netDvrTpsParam.size()); +// netDvrTpsParam.read(); +// String struTime = "" + String.format("%04d", netDvrTpsParam.struTime.wYear) + +// String.format("%02d", netDvrTpsParam.struTime.byMonth) + +// String.format("%02d", netDvrTpsParam.struTime.byDay) + +// String.format("%02d", netDvrTpsParam.struTime.byDay) + +// String.format("%02d", netDvrTpsParam.struTime.byHour) + +// String.format("%02d", netDvrTpsParam.struTime.byMinute) + +// String.format("%02d", netDvrTpsParam.struTime.bySecond); +// Short wDeviceID = new Short(netDvrTpsParam.struTPSRealTimeInfo.wDeviceID);//设备ID +// int channel = netDvrTpsParam.dwChan; //触发报警通道号 +// String byLane = new String(String.valueOf(netDvrTpsParam.struTPSRealTimeInfo.byLane)).trim();// 对应车道号 +// String bySpeed = new String(String.valueOf(netDvrTpsParam.struTPSRealTimeInfo.bySpeed)).trim();// 对应车速(KM/H) +// int dwDownwardFlow = netDvrTpsParam.struTPSRealTimeInfo.dwDownwardFlow;//当前车道 从上到下车流量 +// int dwUpwardFlow = netDvrTpsParam.struTPSRealTimeInfo.dwUpwardFlow; //当前车道 从下到上车流量 +// System.out.println("通道号:" + channel + "; 时间:" + struTime + ";对应车道号:" + byLane + ";当前车道 从上到下车流量:" + dwDownwardFlow + ";dwUpwardFlow:" + dwUpwardFlow); +// break; +// +// case HCNetSDK.COMM_ALARM_TPS_STATISTICS: //统计过车数据 +// HCNetSDK.NET_DVR_TPS_STATISTICS_INFO netDvrTpsStatisticsInfo = new HCNetSDK.NET_DVR_TPS_STATISTICS_INFO(); +// netDvrTpsStatisticsInfo.write(); +// Pointer pTpsVehicle = netDvrTpsStatisticsInfo.getPointer(); +// pTpsVehicle.write(0, pAlarmInfo.getByteArray(0, netDvrTpsStatisticsInfo.size()), 0, netDvrTpsStatisticsInfo.size()); +// netDvrTpsStatisticsInfo.read(); +// int Tpschannel = netDvrTpsStatisticsInfo.dwChan; //触发报警通道号 +// //统计开始时间 +// String struStartTime = "" + String.format("%04d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.wYear) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.byMonth) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.byDay) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.byDay) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.byHour) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.byMinute) + +// String.format("%02d", netDvrTpsStatisticsInfo.struTPSStatisticsInfo.struStartTime.bySecond); +// byte TotalLaneNum = netDvrTpsStatisticsInfo.struTPSStatisticsInfo.byTotalLaneNum; //有效车道总数 +// System.out.println("通道号:" + Tpschannel + "; 开始统计时间:" + struStartTime + "有效车道总数:" + TotalLaneNum); +// break; +// case HCNetSDK.COMM_ITS_PARK_VEHICLE: //停车场数据上传 +// HCNetSDK.NET_ITS_PARK_VEHICLE strParkVehicle = new HCNetSDK.NET_ITS_PARK_VEHICLE(); +// strParkVehicle.write(); +// Pointer pstrParkVehicle = strParkVehicle.getPointer(); +// pstrParkVehicle.write(0, pAlarmInfo.getByteArray(0, strParkVehicle.size()), 0, strParkVehicle.size()); +// strParkVehicle.read(); +// try { +// byte ParkError = strParkVehicle.byParkError; //停车异常:0- 正常,1- 异常 +// String ParkingNo = new String(strParkVehicle.byParkingNo, "UTF-8"); //车位编号 +// byte LocationStatus = strParkVehicle.byLocationStatus; //车位车辆状态 0- 无车,1- 有车 +// MonitoringSiteID = strParkVehicle.byMonitoringSiteID.toString(); +// String plateNo = new String(strParkVehicle.struPlateInfo.sLicense, "GBK"); //车牌号 +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// //报警图片信息 +// for (int i = 0; i < strParkVehicle.dwPicNum; i++) { +// if (strParkVehicle.struPicInfo[i].dwDataLen > 0) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_ParkVehicle.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strParkVehicle.struPicInfo[i].pBuffer.getByteBuffer(offset, strParkVehicle.struPicInfo[i].dwDataLen); +// byte[] bytes = new byte[strParkVehicle.struPicInfo[i].dwDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// } +// break; +// case HCNetSDK.COMM_ALARMHOST_CID_ALARM://报警主机CID报告报警上传 +// HCNetSDK.NET_DVR_CID_ALARM strCIDalarm = new HCNetSDK.NET_DVR_CID_ALARM(); +// strCIDalarm.write(); +// Pointer pstrCIDalarm = strCIDalarm.getPointer(); +// pstrCIDalarm.write(0, pAlarmInfo.getByteArray(0, strCIDalarm.size()), 0, strCIDalarm.size()); +// strCIDalarm.read(); +// try { +// String TriggerTime = "" + String.format("%04d", strCIDalarm.struTriggerTime.wYear) + +// String.format("%02d", strCIDalarm.struTriggerTime.byMonth) + +// String.format("%02d", strCIDalarm.struTriggerTime.byDay) + +// String.format("%02d", strCIDalarm.struTriggerTime.byDay) + +// String.format("%02d", strCIDalarm.struTriggerTime.byHour) + +// String.format("%02d", strCIDalarm.struTriggerTime.byMinute) + +// String.format("%02d", strCIDalarm.struTriggerTime.bySecond); //触发报警时间 +// String sCIDCode = new String(strCIDalarm.sCIDCode, "GBK"); //CID事件号 +// String sCIDDescribe = new String(strCIDalarm.sCIDDescribe, "GBK"); //CID事件名 +// byte bySubSysNo = strCIDalarm.bySubSysNo; //子系统号 +// if (strCIDalarm.wDefenceNo != 0xff) +// { +// System.out.println("防区号:"+Integer.sum(strCIDalarm.wDefenceNo,1)); +// } +// System.out.println("【CID事件】" + "触发时间:" + TriggerTime + "CID事件号:" + sCIDCode + "CID事件名:" + sCIDDescribe + "子系统号:" + +// bySubSysNo); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// break; +// case HCNetSDK.COMM_IPC_AUXALARM_RESULT: //PIR报警、无线报警、呼救报警信息 +// System.out.println("PIR报警、无线报警、呼救报警触发"); +// break; +// case HCNetSDK.COMM_ISAPI_ALARM: //ISAPI协议报警信息 +// HCNetSDK.NET_DVR_ALARM_ISAPI_INFO struEventISAPI = new HCNetSDK.NET_DVR_ALARM_ISAPI_INFO(); +// struEventISAPI.write(); +// Pointer pEventISAPI = struEventISAPI.getPointer(); +// pEventISAPI.write(0, pAlarmInfo.getByteArray(0, struEventISAPI.size()), 0, struEventISAPI.size()); +// struEventISAPI.read(); +// String sAlarmInfo = new String(pAlarmer.sDeviceIP).trim(); +// //报警数据类型:0- invalid,1- xml,2- json +// sAlarmInfo = "报警设备IP:" + sAlarmInfo + ":ISAPI协议报警信息, 数据格式:" + struEventISAPI.byDataType + +// ", 图片个数:" + struEventISAPI.byPicturesNumber; +// System.out.println(sAlarmInfo); +// SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMddHHmmss"); +// String curTime1 = sf1.format(new Date()); +// //报警数据打印 +// HCNetSDK.BYTE_ARRAY m_strISAPIData = new HCNetSDK.BYTE_ARRAY(struEventISAPI.dwAlarmDataLen); +// m_strISAPIData.write(); +// Pointer pPlateInfo = m_strISAPIData.getPointer(); +// pPlateInfo.write(0, struEventISAPI.pAlarmData.getByteArray(0, m_strISAPIData.size()), 0, m_strISAPIData.size()); +// m_strISAPIData.read(); +// System.out.println(new String(m_strISAPIData.byValue).trim() +"\n"); +///* +// FileOutputStream foutdata; +// try { +// String jsonfilename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + curTime1 + "_ISAPI_Alarm_" + ".json"; +// foutdata = new FileOutputStream(jsonfilename); +// //将字节写入文件 +// ByteBuffer jsonbuffers = struEventISAPI.pAlarmData.getByteBuffer(0, struEventISAPI.dwAlarmDataLen); +// byte[] jsonbytes = new byte[struEventISAPI.dwAlarmDataLen]; +// jsonbuffers.rewind(); +// jsonbuffers.get(jsonbytes); +// foutdata.write(jsonbytes); +// foutdata.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// }*/ +// //图片数据保存 +// for (int i = 0; i < struEventISAPI.byPicturesNumber; i++) { +// HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA struPicData = new HCNetSDK.NET_DVR_ALARM_ISAPI_PICDATA(); +// struPicData.write(); +// Pointer pPicData = struPicData.getPointer(); +// pPicData.write(0, struEventISAPI.pPicPackData.getByteArray(i * struPicData.size(), struPicData.size()), 0, struPicData.size()); +// struPicData.read(); +// +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + curTime1 + +// "_ISAPIPic_" + i + "_" + new String(struPicData.szFilename).trim() + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struPicData.pPicData.getByteBuffer(offset, struPicData.dwPicLen); +// byte[] bytes = new byte[struPicData.dwPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case HCNetSDK.COMM_VCA_ALARM: // 智能检测通用报警(Json或者XML数据结构) +// sAlarmInfo = new String(pAlarmer.sDeviceIP); +// //报警数据类型:0- invalid,1- xml,2- json +// sAlarmInfo = "报警设备IP:" + sAlarmInfo; +// System.out.println(sAlarmInfo); +// +// SimpleDateFormat sf0 = new SimpleDateFormat("yyyyMMddHHmmss"); +// String curTime0 = sf0.format(new Date()); +// FileOutputStream Data; +// String jsonfile = "../pic" + new String(pAlarmer.sDeviceIP).trim() + curTime0 + "_VCA_ALARM_" + ".json"; +// try { +// Data = new FileOutputStream(jsonfile); +// //将字节写入文件 +// ByteBuffer dataBuffer = pAlarmInfo.getByteBuffer(0, dwBufLen); +// byte[] dataByte = new byte[dwBufLen]; +// dataBuffer.rewind(); +// dataBuffer.get(dataByte); +// Data.write(dataByte); +// Data.close(); +// } catch (FileNotFoundException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// break; +// +// //异常行为检测信息 +// case HCNetSDK.COMM_ALARM_RULE: +// HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); +// strVcaAlarm.write(); +// Pointer pVCAInfo = strVcaAlarm.getPointer(); +// pVCAInfo.write(0, pAlarmInfo.getByteArray(0, strVcaAlarm.size()), 0, strVcaAlarm.size()); +// strVcaAlarm.read(); +// +// switch (strVcaAlarm.struRuleInfo.wEventTypeEx) { +// case 1: //穿越警戒面 (越界侦测) +// System.out.println("越界侦测报警发生"); +// strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_TRAVERSE_PLANE.class); +// System.out.println("检测目标:"+strVcaAlarm.struRuleInfo.uEventParam.struTraversePlane.byDetectionTarget); //检测目标,0表示所有目标(表示不锁定检测目标,所有目标都将进行检测),其他取值按位表示不同的检测目标:0x01-人,0x02-车 +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "VCA_TRAVERSE_PLANE" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case 2: //目标进入区域 +// System.out.println("目标进入区域报警发生"); +// strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class); +// System.out.println("检测目标:"+strVcaAlarm.struRuleInfo.uEventParam.struArea.byDetectionTarget); +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_TargetEnter" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case 3: //目标离开区域 +// System.out.println("目标离开区域报警触发"); +// strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_AREA.class); +// System.out.println("检测目标:"+strVcaAlarm.struRuleInfo.uEventParam.struArea.byDetectionTarget); +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_TargetLeave" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case 4: //周界入侵 +// System.out.println("周界入侵报警发生"); +// strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_INTRUSION.class); +// System.out.println("检测目标:"+strVcaAlarm.struRuleInfo.uEventParam.struIntrusion.byDetectionTarget); +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "VCA_INTRUSION" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case 5: //徘徊 +// System.out.println("徘徊事件触发"); +// +// break; +// case 8: //快速移动(奔跑), +// System.out.println("快速移动(奔跑)事件触发"); +// break; +// case 15: +// System.out.println("事件触发"); +// strVcaAlarm.struRuleInfo.uEventParam.setType(HCNetSDK.NET_VCA_LEAVE_POSITION.class); +// System.out.println(strVcaAlarm.struRuleInfo.uEventParam.struLeavePos.byOnPosition); +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "VCA_LEAVE_POSITION_" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// case 20: //倒地检测 +// System.out.println("倒地事件触发"); +// break; +// case 44: //玩手机 +// +// System.out.println("玩手机报警发生"); +// //图片保存 +// if ((strVcaAlarm.dwPicDataLen > 0) && (strVcaAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "PLAY_CELLPHONE_" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strVcaAlarm.pImage.getByteBuffer(offset, strVcaAlarm.dwPicDataLen); +// byte[] bytes = new byte[strVcaAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case 45: //持续检测 +// System.out.println("持续检测事件触发"); +// default: +// System.out.println("行为事件类型:" + strVcaAlarm.struRuleInfo.wEventTypeEx); +// break; +// } +// break; +// case HCNetSDK.COMM_ALARM_ACS: //门禁主机报警信息 +// HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO(); +// strACSInfo.write(); +// Pointer pACSInfo = strACSInfo.getPointer(); +// pACSInfo.write(0, pAlarmInfo.getByteArray(0, strACSInfo.size()), 0, strACSInfo.size()); +// strACSInfo.read(); +// /**门禁事件的详细信息解析,通过主次类型的可以判断当前的具体门禁类型,例如(主类型:0X5 次类型:0x4b 表示人脸认证通过, +// 主类型:0X5 次类型:0x4c 表示人脸认证失败)*/ +// System.out.println("【门禁主机报警信息】卡号:" + new String(strACSInfo.struAcsEventInfo.byCardNo).trim() + ",卡类型:" + +// strACSInfo.struAcsEventInfo.byCardType + ",报警主类型:" + Integer.toHexString(strACSInfo.dwMajor) + ",报警次类型:" + Integer.toHexString(strACSInfo.dwMinor)); +// System.out.println("工号1:" + strACSInfo.struAcsEventInfo.dwEmployeeNo); +// //温度信息(如果设备支持测温功能,人脸温度信息从NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体获取) +// if (strACSInfo.byAcsEventInfoExtendV20 == 1) { +// HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20 strAcsInfoExV20 = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20(); +// strAcsInfoExV20.write(); +// Pointer pAcsInfoExV20 = strAcsInfoExV20.getPointer(); +// pAcsInfoExV20.write(0, strACSInfo.pAcsEventInfoExtendV20.getByteArray(0, strAcsInfoExV20.size()), 0, strAcsInfoExV20.size()); +// strAcsInfoExV20.read(); +// System.out.println("实时温度值:" + strAcsInfoExV20.fCurrTemperature); +// } +// //考勤状态 +// if (strACSInfo.byAcsEventInfoExtend == 1) { +// HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND strAcsInfoEx = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND(); +// strAcsInfoEx.write(); +// Pointer pAcsInfoEx = strAcsInfoEx.getPointer(); +// pAcsInfoEx.write(0, strACSInfo.pAcsEventInfoExtend.getByteArray(0, strAcsInfoEx.size()), 0, strAcsInfoEx.size()); +// strAcsInfoEx.read(); +// System.out.println("考勤状态:" + strAcsInfoEx.byAttendanceStatus); +// System.out.println("工号2:" + new String(strAcsInfoEx.byEmployeeNo).trim()); +// } +// +// /** +// * 报警时间 +// */ +// String year = Integer.toString(strACSInfo.struTime.dwYear); +// String SwipeTime = year + strACSInfo.struTime.dwMonth + strACSInfo.struTime.dwDay + strACSInfo.struTime.dwHour + strACSInfo.struTime.dwMinute + +// strACSInfo.struTime.dwSecond; +// if (strACSInfo.dwPicDataLen > 0) { +//// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +//// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// /** +// * 人脸保存路径 +// */ +// String filename = "../pic/" + SwipeTime + "_ACS_Event_" + new String(strACSInfo.struAcsEventInfo.byCardNo).trim() + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strACSInfo.pPicData.getByteBuffer(offset, strACSInfo.dwPicDataLen); +// byte[] bytes = new byte[strACSInfo.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// +// case HCNetSDK.COMM_ID_INFO_ALARM: //身份证信息 +// HCNetSDK.NET_DVR_ID_CARD_INFO_ALARM strIDCardInfo = new HCNetSDK.NET_DVR_ID_CARD_INFO_ALARM(); +// strIDCardInfo.write(); +// Pointer pIDCardInfo = strIDCardInfo.getPointer(); +// pIDCardInfo.write(0, pAlarmInfo.getByteArray(0, strIDCardInfo.size()), 0, strIDCardInfo.size()); +// strIDCardInfo.read(); +// System.out.println("报警主类型:" + Integer.toHexString(strIDCardInfo.dwMajor) + ",报警次类型:" + Integer.toHexString(strIDCardInfo.dwMinor)); +// /** +// * 身份证信息 +// */ +// String IDnum = new String(strIDCardInfo.struIDCardCfg.byIDNum).trim(); +// System.out.println("【身份证信息】:身份证号码:" + IDnum + ",姓名:" + +// new String(strIDCardInfo.struIDCardCfg.byName).trim() + ",住址:" + new String(strIDCardInfo.struIDCardCfg.byAddr)); +// +// /** +// * 报警时间 +// */ +// String year1 = Integer.toString(strIDCardInfo.struSwipeTime.wYear); +// String SwipeTime1 = year1 + strIDCardInfo.struSwipeTime.byMonth + strIDCardInfo.struSwipeTime.byDay + strIDCardInfo.struSwipeTime.byHour + strIDCardInfo.struSwipeTime.byMinute + +// strIDCardInfo.struSwipeTime.bySecond; +// /** +// * 保存图片 +// */ +// //身份证图片 +// if (strIDCardInfo.dwPicDataLen > 0 || strIDCardInfo.pPicData != null) { +//// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +//// String nowtime = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + SwipeTime1 + "_" + IDnum + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strIDCardInfo.pPicData.getByteBuffer(offset, strIDCardInfo.dwPicDataLen); +// byte[] bytes = new byte[strIDCardInfo.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// +// if (strIDCardInfo.dwCapturePicDataLen > 0 || strIDCardInfo.pCapturePicData != null) { +//// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +//// String nowtime = sf.format(new Date()); +// FileOutputStream fout; +// try { +// /** +// * 人脸图片保存路径 +// */ +// String filename = "../pic/" + SwipeTime1 + "_CapturePic_" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strIDCardInfo.pCapturePicData.getByteBuffer(offset, strIDCardInfo.dwCapturePicDataLen); +// byte[] bytes = new byte[strIDCardInfo.dwCapturePicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// +// case HCNetSDK.COMM_ALARM_VIDEO_INTERCOM: //可视对讲报警信息 +// System.out.println("可视对讲报警触发"); +// HCNetSDK.NET_DVR_VIDEO_INTERCOM_ALARM strVideoIntercomAlarm = new HCNetSDK.NET_DVR_VIDEO_INTERCOM_ALARM(); +// strVideoIntercomAlarm.write(); +// Pointer pVideoIntercomAlarm = strVideoIntercomAlarm.getPointer(); +// pVideoIntercomAlarm.write(0, pAlarmInfo.getByteArray(0, strVideoIntercomAlarm.size()), 0, strVideoIntercomAlarm.size()); +// strVideoIntercomAlarm.read(); +// System.out.println("byAlarmType:" + strVideoIntercomAlarm.byAlarmType); +// +// if (strVideoIntercomAlarm.byAlarmType == 1) { +// strVideoIntercomAlarm.uAlarmInfo.setType(HCNetSDK.NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION.class); +// strVideoIntercomAlarm.uAlarmInfo.read(); +// System.out.println("byZoneType :" + strVideoIntercomAlarm.uAlarmInfo.struZoneAlarm.byZoneType); +// } +// +// break; +// case HCNetSDK.COMM_UPLOAD_VIDEO_INTERCOM_EVENT: //可视对讲事件记录信息 +// System.out.println("可视对讲事件记录报警触发"); +// HCNetSDK.NET_DVR_VIDEO_INTERCOM_EVENT strVideoIntercomEvent = new HCNetSDK.NET_DVR_VIDEO_INTERCOM_EVENT(); +// strVideoIntercomEvent.write(); +// Pointer pVideoIntercomEvent = strVideoIntercomEvent.getPointer(); +// pVideoIntercomEvent.write(0, pAlarmInfo.getByteArray(0, strVideoIntercomEvent.size()), 0, strVideoIntercomEvent.size()); +// strVideoIntercomEvent.read(); +// System.out.println("byEventType:" + strVideoIntercomEvent.byEventType); +// +// if (strVideoIntercomEvent.byEventType == 1) { +// strVideoIntercomEvent.uEventInfo.setType(HCNetSDK.NET_DVR_UNLOCK_RECORD_INFO.class); +// strVideoIntercomEvent.uEventInfo.read(); +// System.out.println("byUnlockType:" + strVideoIntercomEvent.uEventInfo.struUnlockRecord.byUnlockType +// + ",byControlSrc:" + new String(strVideoIntercomEvent.uEventInfo.struUnlockRecord.byControlSrc).trim()); +// } +// break; +// case HCNetSDK.COMM_UPLOAD_FACESNAP_RESULT: //实时特征抓拍上传 +// System.out.println("UPLOAD_FACESNAP_Alarm"); +// HCNetSDK.NET_VCA_FACESNAP_RESULT strFaceSnapInfo = new HCNetSDK.NET_VCA_FACESNAP_RESULT(); +// strFaceSnapInfo.write(); +// Pointer pFaceSnapInfo = strFaceSnapInfo.getPointer(); +// pFaceSnapInfo.write(0, pAlarmInfo.getByteArray(0, strFaceSnapInfo.size()), 0, strFaceSnapInfo.size()); +// strFaceSnapInfo.read(); +// +// //事件时间 +// int dwYear = (strFaceSnapInfo.dwAbsTime >> 26) + 2000; +// int dwMonth = (strFaceSnapInfo.dwAbsTime >> 22) & 15; +// int dwDay = (strFaceSnapInfo.dwAbsTime >> 17) & 31; +// int dwHour = (strFaceSnapInfo.dwAbsTime >> 12) & 31; +// int dwMinute = (strFaceSnapInfo.dwAbsTime >> 6) & 63; +// int dwSecond = (strFaceSnapInfo.dwAbsTime >> 0) & 63; +// +// String strAbsTime = "" + String.format("%04d", dwYear) + +// String.format("%02d", dwMonth) + +// String.format("%02d", dwDay) + +// String.format("%02d", dwHour) + +// String.format("%02d", dwMinute) + +// String.format("%02d", dwSecond); +// +// //人脸属性信息 +// String sFaceAlarmInfo = "Abs时间:" + strAbsTime + ",是否戴口罩:" + +// strFaceSnapInfo.struFeature.byMask + ",是否微笑:" + strFaceSnapInfo.struFeature.bySmile; +// System.out.println("人脸信息:" + sFaceAlarmInfo); +// +// //人脸测温信息 +// if (strFaceSnapInfo.byAddInfo == 1) { +// HCNetSDK.NET_VCA_FACESNAP_ADDINFO strAddInfo = new HCNetSDK.NET_VCA_FACESNAP_ADDINFO(); +// strAddInfo.write(); +// Pointer pAddInfo = strAddInfo.getPointer(); +// pAddInfo.write(0, strFaceSnapInfo.pAddInfoBuffer.getByteArray(0, strAddInfo.size()), 0, strAddInfo.size()); +// strAddInfo.read(); +// +// String sTemperatureInfo = "测温是否开启:" + strAddInfo.byFaceSnapThermometryEnabled + "人脸温度:" + strAddInfo.fFaceTemperature + "温度是否异常" +// + strAddInfo.byIsAbnomalTemperature + "报警温度阈值:" + strAddInfo.fAlarmTemperature; +// System.out.println("人脸温度信息:" + sTemperatureInfo); +// +// } +// +// try { +// SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式 +// String time = df.format(new Date());// new Date()为获取当前系统时间 +// +// //人脸图片写文件 +// FileOutputStream small = new FileOutputStream("../pic/" + time + "small.jpg"); +// FileOutputStream big = new FileOutputStream("../pic/" + time + "big.jpg"); +// try { +// small.write(strFaceSnapInfo.pBuffer1.getByteArray(0, strFaceSnapInfo.dwFacePicLen), 0, strFaceSnapInfo.dwFacePicLen); +// small.close(); +// } catch (IOException ex) { +// ex.printStackTrace(); +// } +// try { +// big.write(strFaceSnapInfo.pBuffer2.getByteArray(0, strFaceSnapInfo.dwBackgroundPicLen), 0, strFaceSnapInfo.dwBackgroundPicLen); +// big.close(); +// } catch (IOException ex) { +// ex.printStackTrace(); +// } +// +// } catch (FileNotFoundException ex) { +// ex.printStackTrace(); +// } +// break; +// +// case HCNetSDK.COMM_SNAP_MATCH_ALARM: //人脸比对报警 +// HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM strFaceSnapMatch = new HCNetSDK.NET_VCA_FACESNAP_MATCH_ALARM(); +// strFaceSnapMatch.write(); +// Pointer pFaceSnapMatch = strFaceSnapMatch.getPointer(); +// pFaceSnapMatch.write(0, pAlarmInfo.getByteArray(0, strFaceSnapMatch.size()), 0, strFaceSnapMatch.size()); +// strFaceSnapMatch.read(); +// //比对结果,0-保留,1-比对成功,2-比对失败 +// String sFaceSnapMatchInfo = "比对结果:" + strFaceSnapMatch.byContrastStatus + ",相似度:" + strFaceSnapMatch.fSimilarity; +// System.out.println(sFaceSnapMatchInfo); +// if (strFaceSnapMatch.struBlockListInfo.dwFDIDLen > 0) { +// long offset1 = 0; +// ByteBuffer buffers1 = strFaceSnapMatch.struBlockListInfo.pFDID.getByteBuffer(offset1, strFaceSnapMatch.struBlockListInfo.dwFDIDLen); +// byte[] bytes1 = new byte[strFaceSnapMatch.struBlockListInfo.dwFDIDLen]; +// buffers1.get(bytes1); +// System.out.println("人脸库ID:" + new String(bytes1)); +// } +// if (strFaceSnapMatch.struBlockListInfo.dwPIDLen > 0) { +// long offset2 = 0; +// ByteBuffer buffers2 = strFaceSnapMatch.struBlockListInfo.pPID.getByteBuffer(offset2, strFaceSnapMatch.struBlockListInfo.dwPIDLen); +// byte[] bytes2 = new byte[strFaceSnapMatch.struBlockListInfo.dwPIDLen]; +// buffers2.get(bytes2); +// System.out.println("图片ID:" + new String(bytes2)); +// } +// if (strFaceSnapMatch.struBlockListInfo.struBlockListInfo.dwFCAdditionInfoLen > 0) { +// //抓拍库附加信息解析(解析人脸测温温度,人脸温度存放在附件信息的XML报文中,节点: ) +// SimpleDateFormat sf2 = new SimpleDateFormat("yyyyMMddHHmmss"); +// String curTime2 = sf2.format(new Date()); +// FileOutputStream AddtionData; +// String AddtionFile = "../pic" + new String(pAlarmer.sDeviceIP).trim() + curTime2 + "_FCAdditionInfo_" + ".xml"; +// try { +// Data = new FileOutputStream(AddtionFile); +// //将字节写入文件 +// ByteBuffer dataBuffer = strFaceSnapMatch.struBlockListInfo.struBlockListInfo.pFCAdditionInfoBuffer.getByteBuffer(0, strFaceSnapMatch.struBlockListInfo.struBlockListInfo.dwFCAdditionInfoLen); +// byte[] dataByte = new byte[dwBufLen]; +// dataBuffer.rewind(); +// dataBuffer.get(dataByte); +// Data.write(dataByte); +// Data.close(); +// } catch (FileNotFoundException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// //人脸比对报警图片保存,图片格式二进制 +// if ((strFaceSnapMatch.dwSnapPicLen > 0) && (strFaceSnapMatch.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_pSnapPicBuffer" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.pSnapPicBuffer.getByteBuffer(offset, strFaceSnapMatch.dwSnapPicLen); +// byte[] bytes = new byte[strFaceSnapMatch.dwSnapPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// if ((strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen > 0) && (strFaceSnapMatch.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_struSnapInfo_pBuffer1" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.struSnapInfo.pBuffer1.getByteBuffer(offset, strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen); +// byte[] bytes = new byte[strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// if ((strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen > 0) && (strFaceSnapMatch.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// try { +// String filename = "../pic/" + newName + "_fSimilarity_" + strFaceSnapMatch.fSimilarity + "_struBlackListInfo_pBuffer1" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.struBlockListInfo.pBuffer1.getByteBuffer(offset, strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen); +// byte[] bytes = new byte[strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //人脸比对报警图片保存,图片格式URL格式 +// if ((strFaceSnapMatch.dwSnapPicLen > 0) && (strFaceSnapMatch.byPicTransType == 1)) { +// +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.pSnapPicBuffer.getByteBuffer(offset, strFaceSnapMatch.dwSnapPicLen); +// byte[] bytes = new byte[strFaceSnapMatch.dwSnapPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// String SnapPicUrl = new String(bytes); +// System.out.println("抓拍图URL:" + SnapPicUrl); +// } +// if ((strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen > 0) && (strFaceSnapMatch.byPicTransType == 1)) { +// +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.struSnapInfo.pBuffer1.getByteBuffer(offset, strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen); +// byte[] bytes = new byte[strFaceSnapMatch.struSnapInfo.dwSnapFacePicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// String SnapPicUrl = new String(bytes); +// System.out.println("抓拍人脸子图URL:" + SnapPicUrl); +// } +// if ((strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen > 0) && (strFaceSnapMatch.byPicTransType == 1)) { +// +// long offset = 0; +// ByteBuffer buffers = strFaceSnapMatch.struBlockListInfo.pBuffer1.getByteBuffer(offset, strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen); +// byte[] bytes = new byte[strFaceSnapMatch.struBlockListInfo.dwBlockListPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// String SnapPicUrl = new String(bytes); +// System.out.println("人脸库人脸图的URL:" + SnapPicUrl); +// } +// +// +// break; +// // 客流量报警信息 +// case HCNetSDK.COMM_ALARM_PDC: +// HCNetSDK.NET_DVR_PDC_ALRAM_INFO strPDCResult = new HCNetSDK.NET_DVR_PDC_ALRAM_INFO(); +// strPDCResult.write(); +// Pointer pPDCInfo = strPDCResult.getPointer(); +// pPDCInfo.write(0, pAlarmInfo.getByteArray(0, strPDCResult.size()), 0, strPDCResult.size()); +// strPDCResult.read(); +// // byMode=0-实时统计结果(联合体中struStatFrame有效), +// if (strPDCResult.byMode == 0) { +// strPDCResult.uStatModeParam.setType(HCNetSDK.NET_DVR_STATFRAME.class); +// String sAlarmPDC0Info = "实时客流量统计,进入人数:" + strPDCResult.dwEnterNum + ",离开人数:" + strPDCResult.dwLeaveNum + +// ", byMode:" + strPDCResult.byMode + ", dwRelativeTime:" + strPDCResult.uStatModeParam.struStatFrame.dwRelativeTime + +// ", dwAbsTime:" + strPDCResult.uStatModeParam.struStatFrame.dwAbsTime; +// } +// // byMode=1-周期统计结果(联合体中struStatTime有效), +// if (strPDCResult.byMode == 1) { +// strPDCResult.uStatModeParam.setType(HCNetSDK.NET_DVR_STATTIME.class); +// String strtmStart = "" + String.format("%04d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwYear) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwMonth) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwDay) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwHour) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwMinute) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmStart.dwSecond); +// String strtmEnd = "" + String.format("%04d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwYear) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwMonth) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwDay) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwHour) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwMinute) + +// String.format("%02d", strPDCResult.uStatModeParam.struStatTime.tmEnd.dwSecond); +// String sAlarmPDC1Info = "周期性客流量统计,进入人数:" + strPDCResult.dwEnterNum + ",离开人数:" + strPDCResult.dwLeaveNum + +// ", byMode:" + strPDCResult.byMode + ", tmStart:" + strtmStart + ",tmEnd :" + strtmEnd; +// } +// break; +// case HCNetSDK.COMM_ALARM_V30: //移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以上版本支持的设备) +// HCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfo = new HCNetSDK.NET_DVR_ALARMINFO_V30(); +// struAlarmInfo.write(); +// Pointer pAlarmInfo_V30 = struAlarmInfo.getPointer(); +// pAlarmInfo_V30.write(0, pAlarmInfo.getByteArray(0, struAlarmInfo.size()), 0, struAlarmInfo.size()); +// struAlarmInfo.read(); +// System.out.println("报警类型:" + struAlarmInfo.dwAlarmType); // 3-移动侦测 +// break; +// case HCNetSDK.COMM_ALARM_V40: //移动侦测、视频丢失、遮挡、IO信号量等报警信息,报警数据为可变长 +// +// HCNetSDK.NET_DVR_ALARMINFO_V40 struAlarmInfoV40 = new HCNetSDK.NET_DVR_ALARMINFO_V40(); +// struAlarmInfoV40.write(); +// Pointer pAlarmInfoV40 = struAlarmInfoV40.getPointer(); +// pAlarmInfoV40.write(0, pAlarmInfo.getByteArray(0, struAlarmInfoV40.size()), 0, struAlarmInfoV40.size()); +// struAlarmInfoV40.read(); +// switch (struAlarmInfoV40.struAlarmFixedHeader.dwAlarmType) { +// case 0: +// struAlarmInfoV40.struAlarmFixedHeader.ustruAlarm.setType(HCNetSDK.struIOAlarm.class); +// struAlarmInfoV40.read(); +// System.out.println("信号量报警,报警输入口:"+struAlarmInfoV40.struAlarmFixedHeader.ustruAlarm.struioAlarm.dwAlarmInputNo); +// break; +// case 1: +// System.out.println("硬盘满"); +// break; +// case 2: +// System.out.println("信号丢失"); +// break; +// case 3: +// String sAlarmType=""; +// struAlarmInfoV40.struAlarmFixedHeader.ustruAlarm.setType(HCNetSDK.struAlarmChannel.class); +// struAlarmInfoV40.read(); +// int iChanNum = struAlarmInfoV40.struAlarmFixedHeader.ustruAlarm.strualarmChannel.dwAlarmChanNum; +// sAlarmType = sAlarmType + new String(":移动侦测") + "," + "报警通道个数:" + iChanNum + "," + "报警通道号:"; +// +// for (int i = 0; i < iChanNum; i++) { +// byte[] byChannel = struAlarmInfoV40.pAlarmData.getByteArray(i * 4, 4); +// +// int iChanneNo = 0; +// for (int j = 0; j < 4; j++) { +// int ioffset = j * 8; +// int iByte = byChannel[j] & 0xff; +// iChanneNo = iChanneNo + (iByte << ioffset); +// } +// +// sAlarmType = sAlarmType + "+ch[" + iChanneNo + "]"; +// } +// System.out.println(sAlarmType); +// break; +// case 4: +// System.out.println("硬盘未格式化"); +// break; +// case 5: +// System.out.println("读写硬盘出错"); +// break; +// case 6: +// System.out.println("遮挡报警"); +// break; +// case 7: +// System.out.println("制式不匹配"); +// break; +// case 8: +// System.out.println("非法访问"); +// break; +// } +// +// break; +// case HCNetSDK.COMM_THERMOMETRY_ALARM: //温度报警信息 +// HCNetSDK.NET_DVR_THERMOMETRY_ALARM struTemInfo = new HCNetSDK.NET_DVR_THERMOMETRY_ALARM(); +// struTemInfo.write(); +// Pointer pTemInfo = struTemInfo.getPointer(); +// pTemInfo.write(0, pAlarmInfo.getByteArray(0, struTemInfo.size()), 0, struTemInfo.size()); +// struTemInfo.read(); +// String sThermAlarmInfo = "规则ID:" + struTemInfo.byRuleID + "预置点号:" + struTemInfo.wPresetNo + "报警等级:" + struTemInfo.byAlarmLevel + "报警类型:" + +// struTemInfo.byAlarmType + "当前温度:" + struTemInfo.fCurrTemperature; +// System.out.println(sThermAlarmInfo); +// //可见光图片保存 +// if ((struTemInfo.dwPicLen > 0) && (struTemInfo.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + struTemInfo.fCurrTemperature + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struTemInfo.pPicBuff.getByteBuffer(offset, struTemInfo.dwPicLen); +// byte[] bytes = new byte[struTemInfo.dwPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// +// if ((struTemInfo.dwThermalPicLen > 0) && (struTemInfo.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + "_ThermalPiC" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struTemInfo.pThermalPicBuff.getByteBuffer(offset, struTemInfo.dwThermalPicLen); +// byte[] bytes = new byte[struTemInfo.dwThermalPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// } +// break; +// case HCNetSDK.COMM_THERMOMETRY_DIFF_ALARM: //温差检测报警 +// HCNetSDK.NET_DVR_THERMOMETRY_DIFF_ALARM strThermDiffAlarm = new HCNetSDK.NET_DVR_THERMOMETRY_DIFF_ALARM(); +// strThermDiffAlarm.write(); +// Pointer pTemDiffInfo = strThermDiffAlarm.getPointer(); +// pTemDiffInfo.write(0, pAlarmInfo.getByteArray(0, strThermDiffAlarm.size()), 0, strThermDiffAlarm.size()); +// strThermDiffAlarm.read(); +// String sThremDiffInfo = "通道号:" + strThermDiffAlarm.dwChannel + ",报警规则:" + strThermDiffAlarm.byAlarmRule + ",当前温差:" + strThermDiffAlarm.fCurTemperatureDiff; +// System.out.println(sThremDiffInfo); +// //可见光图片保存 +// if ((strThermDiffAlarm.dwPicLen > 0) && (strThermDiffAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + strThermDiffAlarm.fCurTemperatureDiff + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strThermDiffAlarm.pPicBuff.getByteBuffer(offset, strThermDiffAlarm.dwPicLen); +// byte[] bytes = new byte[strThermDiffAlarm.dwPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //热成像图片保存 +// if ((strThermDiffAlarm.dwThermalPicLen > 0) && (strThermDiffAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + "_ThermalDiffPiC" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strThermDiffAlarm.pThermalPicBuff.getByteBuffer(offset, strThermDiffAlarm.dwThermalPicLen); +// byte[] bytes = new byte[strThermDiffAlarm.dwThermalPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// } +// break; +// case HCNetSDK.COMM_ALARM_SHIPSDETECTION: //船只检测报警 +// HCNetSDK.NET_DVR_SHIPSDETECTION_ALARM struShipAlarm = new HCNetSDK.NET_DVR_SHIPSDETECTION_ALARM(); +// struShipAlarm.write(); +// Pointer pShipAlarm = struShipAlarm.getPointer(); +// pShipAlarm.write(0, pAlarmInfo.getByteArray(0, struShipAlarm.size()), 0, struShipAlarm.size()); +// struShipAlarm.read(); +// String sShipAlarm = "绝对时间:" + struShipAlarm.dwAbsTime + ",正跨越检测线的船只数:" + struShipAlarm.byShipsNum + ",船头检测的船只数 :" + struShipAlarm.byShipsNumHead +// + ", 船尾检测的船只数 :" + struShipAlarm.byShipsNumEnd; +// System.out.println(sShipAlarm); +// //可见光图片保存 +// if ((struShipAlarm.dwPicLen > 0) && (struShipAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_ShipAlarm" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struShipAlarm.pPicBuffer.getByteBuffer(offset, struShipAlarm.dwPicLen); +// byte[] bytes = new byte[struShipAlarm.dwPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //热成像图片保存 +// if ((struShipAlarm.dwThermalPicLen > 0) && (struShipAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + "_ThermalShipAlarm" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struShipAlarm.pThermalPicBuffer.getByteBuffer(offset, struShipAlarm.dwThermalPicLen); +// byte[] bytes = new byte[struShipAlarm.dwThermalPicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// } +// break; +// +// case HCNetSDK.COMM_FIREDETECTION_ALARM://烟火检测 +// HCNetSDK.NET_DVR_FIREDETECTION_ALARM struFireDecAlarm = new HCNetSDK.NET_DVR_FIREDETECTION_ALARM(); +// struFireDecAlarm.write(); +// Pointer pFireDecAlarm = struFireDecAlarm.getPointer(); +// pFireDecAlarm.write(0, pAlarmInfo.getByteArray(0, struFireDecAlarm.size()), 0, struFireDecAlarm.size()); +// struFireDecAlarm.read(); +// String sFireDecAlarmInfo = "绝对时间:" + struFireDecAlarm.dwAbsTime + ",报警子类型:" + struFireDecAlarm.byAlarmSubType + ",火点最高温度 :" + +// struFireDecAlarm.wFireMaxTemperature + ",火点目标距离:" + struFireDecAlarm.wTargetDistance; +// System.out.println(sFireDecAlarmInfo); +// //可见光图片保存 +// if ((struFireDecAlarm.dwVisiblePicLen > 0) && (struFireDecAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_FireDecAlarm" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struFireDecAlarm.pVisiblePicBuf.getByteBuffer(offset, struFireDecAlarm.dwVisiblePicLen); +// byte[] bytes = new byte[struFireDecAlarm.dwVisiblePicLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //热成像图片保存 +// if ((struFireDecAlarm.dwPicDataLen > 0) && (struFireDecAlarm.byPicTransType == 0)) { +// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); +// String newName = sf.format(new Date()); +// FileOutputStream fout; +// +// try { +// String filename = "../pic/" + newName + "_" + "_ThermalFireAlarm" + ".jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struFireDecAlarm.pBuffer.getByteBuffer(offset, struFireDecAlarm.dwPicDataLen); +// byte[] bytes = new byte[struFireDecAlarm.dwPicDataLen]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// } +// break; +// case HCNetSDK.COMM_UPLOAD_AIOP_VIDEO: //AI开放平台接入视频检测报警信息 +// System.out.println("AI开放平台接入视频检测报警上传"); +// HCNetSDK.NET_AIOP_VIDEO_HEAD struAIOPVideo = new HCNetSDK.NET_AIOP_VIDEO_HEAD(); +// struAIOPVideo.write(); +// Pointer pAIOPVideo = struAIOPVideo.getPointer(); +// pAIOPVideo.write(0, pAlarmInfo.getByteArray(0, struAIOPVideo.size()), 0, struAIOPVideo.size()); +// struAIOPVideo.read(); +// System.out.println("视频任务ID" + new String(struAIOPVideo.szTaskID)); +// System.out.println("通道号:" + struAIOPVideo.dwChannel); +// System.out.println("检测模型包ID" + new String(struAIOPVideo.szMPID)); +// String strTime = String.format("%04d", struAIOPVideo.struTime.wYear) + +// String.format("%02d", struAIOPVideo.struTime.wMonth) + +// String.format("%02d", struAIOPVideo.struTime.wDay) + +// String.format("%02d", struAIOPVideo.struTime.wHour) + +// String.format("%02d", struAIOPVideo.struTime.wMinute) + +// String.format("%02d", struAIOPVideo.struTime.wSecond) + +// String.format("%03d", struAIOPVideo.struTime.wMilliSec); +// //AIOPData数据 +// if (struAIOPVideo.dwAIOPDataSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + strTime + "_VideoData.json"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struAIOPVideo.pBufferAIOPData.getByteBuffer(offset, struAIOPVideo.dwAIOPDataSize); +// byte[] bytes = new byte[struAIOPVideo.dwAIOPDataSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //图片数据保存 +// if (struAIOPVideo.dwPictureSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + strTime + "_VideoPic.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struAIOPVideo.pBufferPicture.getByteBuffer(offset, struAIOPVideo.dwPictureSize); +// byte[] bytes = new byte[struAIOPVideo.dwPictureSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// case HCNetSDK.COMM_UPLOAD_AIOP_PICTURE: //AI开放平台接入图片检测报警信息 +// System.out.println("AI开放平台接入图片检测报警上传"); +// HCNetSDK.NET_AIOP_PICTURE_HEAD struAIOPPic = new HCNetSDK.NET_AIOP_PICTURE_HEAD(); +// struAIOPPic.write(); +// Pointer pAIOPPic = struAIOPPic.getPointer(); +// pAIOPPic.write(0, pAlarmInfo.getByteArray(0, struAIOPPic.size()), 0, struAIOPPic.size()); +// struAIOPPic.read(); +// System.out.println("图片ID:" + new String(struAIOPPic.szPID)); +// System.out.println("检测模型包ID:" + new String(struAIOPPic.szMPID)); +// String strPicTime = "" + String.format("%04d", struAIOPPic.struTime.wYear) + +// String.format("%02d", struAIOPPic.struTime.wMonth) + +// String.format("%02d", struAIOPPic.struTime.wDay) + +// String.format("%02d", struAIOPPic.struTime.wHour) + +// String.format("%02d", struAIOPPic.struTime.wMinute) + +// String.format("%02d", struAIOPPic.struTime.wSecond) + +// String.format("%03d", struAIOPPic.struTime.wMilliSec); +// //AIOPData数据 +// if (struAIOPPic.dwAIOPDataSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + strPicTime + "_AIO_PicData.json"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = struAIOPPic.pBufferAIOPData.getByteBuffer(offset, struAIOPPic.dwAIOPDataSize); +// byte[] bytes = new byte[struAIOPPic.dwAIOPDataSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// +// //AI开放平台接入轮询抓图检测报警信息 +// case HCNetSDK.COMM_UPLOAD_AIOP_POLLING_SNAP: +// System.out.println("AI开放平台接入轮询抓图检测报警事件上传"); +// HCNetSDK.NET_AIOP_POLLING_SNAP_HEAD strAiopPollingPic = new HCNetSDK.NET_AIOP_POLLING_SNAP_HEAD(); +// strAiopPollingPic.write(); +// Pointer pAiopPollingPic = strAiopPollingPic.getPointer(); +// pAiopPollingPic.write(0, pAlarmInfo.getByteArray(0, strAiopPollingPic.size()), 0, strAiopPollingPic.size()); +// strAiopPollingPic.read(); +// System.out.println("通道号:" + strAiopPollingPic.dwChannel); +// System.out.println("轮询抓图任务ID:" + new String(strAiopPollingPic.szTaskID)); +// String strPollingPicTime = "" + String.format("%04d", strAiopPollingPic.struTime.wYear) + +// String.format("%02d", strAiopPollingPic.struTime.wMonth) + +// String.format("%02d", strAiopPollingPic.struTime.wDay) + +// String.format("%02d", strAiopPollingPic.struTime.wHour) + +// String.format("%02d", strAiopPollingPic.struTime.wMinute) + +// String.format("%02d", strAiopPollingPic.struTime.wSecond) + +// String.format("%03d", strAiopPollingPic.struTime.wMilliSec); +// //AIOPData数据保存 +// if (strAiopPollingPic.dwAIOPDataSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + strPollingPicTime + "_PollingPicData.json"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strAiopPollingPic.pBufferAIOPData.getByteBuffer(offset, strAiopPollingPic.dwAIOPDataSize); +// byte[] bytes = new byte[strAiopPollingPic.dwAIOPDataSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //轮询抓图图片保存 +// if (strAiopPollingPic.dwPictureSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + strPollingPicTime + "_PollingPic.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strAiopPollingPic.pBufferPicture.getByteBuffer(offset, strAiopPollingPic.dwPictureSize); +// byte[] bytes = new byte[strAiopPollingPic.dwPictureSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// +// break; +// //AI开放平台接入轮询视频检测报警信息 +// case HCNetSDK.COMM_UPLOAD_AIOP_POLLING_VIDEO: +// System.out.println("AI开放平台接入轮询视频检测报警事件上传"); +// HCNetSDK.NET_AIOP_POLLING_VIDEO_HEAD strAiopPollingVideo = new HCNetSDK.NET_AIOP_POLLING_VIDEO_HEAD(); +// strAiopPollingVideo.write(); +// Pointer pAiopPollingVideo = strAiopPollingVideo.getPointer(); +// pAiopPollingVideo.write(0, pAlarmInfo.getByteArray(0, strAiopPollingVideo.size()), 0, strAiopPollingVideo.size()); +// strAiopPollingVideo.read(); +// System.out.println("通道号:" + strAiopPollingVideo.dwChannel); +// System.out.println("轮询视频任务ID:" + new String(strAiopPollingVideo.szTaskID)); +// String AiopPollingVideoTime = "" + String.format("%04d", strAiopPollingVideo.struTime.wYear) + +// String.format("%02d", strAiopPollingVideo.struTime.wMonth) + +// String.format("%02d", strAiopPollingVideo.struTime.wDay) + +// String.format("%02d", strAiopPollingVideo.struTime.wHour) + +// String.format("%02d", strAiopPollingVideo.struTime.wMinute) + +// String.format("%02d", strAiopPollingVideo.struTime.wSecond) + +// String.format("%03d", strAiopPollingVideo.struTime.wMilliSec); +// //AIOPData数据保存 +// if (strAiopPollingVideo.dwAIOPDataSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + AiopPollingVideoTime + "_PollingVideoData.json"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strAiopPollingVideo.pBufferAIOPData.getByteBuffer(offset, strAiopPollingVideo.dwAIOPDataSize); +// byte[] bytes = new byte[strAiopPollingVideo.dwAIOPDataSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// //对应分析图片数据 +// if (strAiopPollingVideo.dwPictureSize > 0) { +// FileOutputStream fout; +// try { +// String filename = "../pic/" + new String(pAlarmer.sDeviceIP).trim() + +// "_" + AiopPollingVideoTime + "_PollingVideo.jpg"; +// fout = new FileOutputStream(filename); +// //将字节写入文件 +// long offset = 0; +// ByteBuffer buffers = strAiopPollingVideo.pBufferPicture.getByteBuffer(offset, strAiopPollingVideo.dwPictureSize); +// byte[] bytes = new byte[strAiopPollingVideo.dwPictureSize]; +// buffers.rewind(); +// buffers.get(bytes); +// fout.write(bytes); +// fout.close(); +// } catch (FileNotFoundException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// break; +// default: +// System.out.println("报警类型" + Integer.toHexString(lCommand)); +// break; +// } +// } +//} diff --git a/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack.java b/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack.java new file mode 100644 index 0000000..d27354b --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack.java @@ -0,0 +1,17 @@ +//package com.shxy.xyhkcamera.alarm; +// +//import NetSDKDemo.HCNetSDK; +//import com.sun.jna.Pointer; +// +// +///** +// * @author jiangxin +// * @create 2022-08-15-17:26 +// */ +//public class FMSGCallBack implements HCNetSDK.FMSGCallBack { +// //报警信息回调函数 +// public void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { +// AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser); +// return; +// } +//} diff --git a/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack_V31.java b/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack_V31.java new file mode 100644 index 0000000..13ff71a --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/alarm/FMSGCallBack_V31.java @@ -0,0 +1,22 @@ +// +//package com.shxy.xyhkcamera.alarm; +// +//import com.shxy.xyhkcamera.HCNetSDK; +//import com.sun.jna.Pointer; +// +// +// +//public class FMSGCallBack_V31 implements HCNetSDK.FMSGCallBack_V31 { +// //报警信息回调函数 +// public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { +// AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser); +// return true; +// } +//} +// +// +// +// +// +// +// diff --git a/src/main/java/com/shxy/xyhkcamera/configure/MybatisMetaObjectHandler.java b/src/main/java/com/shxy/xyhkcamera/configure/MybatisMetaObjectHandler.java new file mode 100644 index 0000000..013b41f --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/configure/MybatisMetaObjectHandler.java @@ -0,0 +1,34 @@ +package com.shxy.xyhkcamera.configure; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.Objects; + +@Component +public class MybatisMetaObjectHandler implements MetaObjectHandler { + @Override + public void insertFill(MetaObject metaObject) { + insertOrUpdateFill(metaObject, true); + } + + @Override + public void updateFill(MetaObject metaObject) { + insertOrUpdateFill(metaObject, false); + } + + private void insertOrUpdateFill(MetaObject metaObject, boolean isInsert) { + if (isInsert) { + if (Objects.isNull(getFieldValByName("createTime", metaObject))) + this.setFieldValByName("createTime", LocalDateTime.now(), metaObject); + this.setFieldValByName("deleted", 0, metaObject); + } else { + if (Objects.isNull(getFieldValByName("updateTime", metaObject))) + this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); + } + } +} + + diff --git a/src/main/java/com/shxy/xyhkcamera/configure/MybatisPlusConfig.java b/src/main/java/com/shxy/xyhkcamera/configure/MybatisPlusConfig.java new file mode 100644 index 0000000..c5bccfe --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/configure/MybatisPlusConfig.java @@ -0,0 +1,26 @@ +//package com.shxy.xyhkcamera.configure; +// +//import com.baomidou.mybatisplus.annotation.DbType; +//import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; +//import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +//import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.transaction.annotation.EnableTransactionManagement; +// +//@Configuration +//@EnableTransactionManagement +//public class MybatisPlusConfig { +// +// @Bean +// public MybatisPlusInterceptor mybatisPlusInterceptor() { +// MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); +// PaginationInnerInterceptor pii = new PaginationInnerInterceptor(); +// pii.setDbType(DbType.MYSQL); +// pii.setMaxLimit(500L); +// interceptor.addInnerInterceptor(pii); +// return interceptor; +// } +// +//} +// diff --git a/src/main/java/com/shxy/xyhkcamera/controller/DataEaifHController.java b/src/main/java/com/shxy/xyhkcamera/controller/DataEaifHController.java new file mode 100644 index 0000000..8f64fea --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/controller/DataEaifHController.java @@ -0,0 +1,18 @@ +package com.shxy.xyhkcamera.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 红外区域测温数据表 前端控制器 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@RestController +@RequestMapping("/data-eaif-hentity") +public class DataEaifHController { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/controller/ModevEaifController.java b/src/main/java/com/shxy/xyhkcamera/controller/ModevEaifController.java new file mode 100644 index 0000000..414ba62 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/controller/ModevEaifController.java @@ -0,0 +1,18 @@ +package com.shxy.xyhkcamera.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@RestController +@RequestMapping("/modev-eaif-entity") +public class ModevEaifController { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java b/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java new file mode 100644 index 0000000..9167c67 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java @@ -0,0 +1,78 @@ +package com.shxy.xyhkcamera.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 红外区域测温数据表 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@Getter +@Setter +@TableName("data_eaif_h") +@ApiModel(value = "DataEaifHEntity对象", description = "红外区域测温数据表") +public class DataEaifHEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自动编号") + @TableId(value = "data_id", type = IdType.AUTO) + private Integer dataId; + + @ApiModelProperty("设备ID") + @TableField("eqmid") + private Integer eqmid; + + @ApiModelProperty("点、线、区域ID") + @TableField("areaid") + private Integer areaid; + + @ApiModelProperty("采集时间") + @TableField("capturetime") + private LocalDateTime capturetime; + + @ApiModelProperty("最大温度") + @TableField("maxtemp") + private Double maxtemp; + + @ApiModelProperty("最小温度") + @TableField("mintemp") + private Double mintemp; + + @ApiModelProperty("平均温度") + @TableField("avgtemp") + private Double avgtemp; + + @ApiModelProperty("1=>摄氏度2=>华氏度") + @TableField("unit") + private Byte unit; + + @ApiModelProperty("1->点2->线3->框") + @TableField("type") + private Byte type; + + @ApiModelProperty("中间差") + @TableField("mid") + private Double mid; + + @ApiModelProperty("标准方差值") + @TableField("std") + private Double std; + + @TableField("isupload") + private Integer isupload; +} diff --git a/src/main/java/com/shxy/xyhkcamera/entity/ModevEaifEntity.java b/src/main/java/com/shxy/xyhkcamera/entity/ModevEaifEntity.java new file mode 100644 index 0000000..59f8052 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/entity/ModevEaifEntity.java @@ -0,0 +1,46 @@ +package com.shxy.xyhkcamera.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@Getter +@Setter +@TableName("modev_eaif") +@ApiModel(value = "ModevEaifEntity对象", description = "") +public class ModevEaifEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField("eqmid") + private Integer eqmid; + + @ApiModelProperty("预置点id") + @TableField("nPresetId") + private Integer nPresetId; + + @ApiModelProperty("规则编号") + @TableField("nRuleId") + private Integer nRuleId; + + @ApiModelProperty("规则类型") + @TableField("nMeterType") + private Integer nMeterType; +} diff --git a/src/main/java/com/shxy/xyhkcamera/mapper/DataEaifHMapper.java b/src/main/java/com/shxy/xyhkcamera/mapper/DataEaifHMapper.java new file mode 100644 index 0000000..b950122 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/mapper/DataEaifHMapper.java @@ -0,0 +1,16 @@ +package com.shxy.xyhkcamera.mapper; + +import com.shxy.xyhkcamera.entity.DataEaifHEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 红外区域测温数据表 Mapper 接口 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +public interface DataEaifHMapper extends BaseMapper { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/mapper/ModevEaifMapper.java b/src/main/java/com/shxy/xyhkcamera/mapper/ModevEaifMapper.java new file mode 100644 index 0000000..30deec8 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/mapper/ModevEaifMapper.java @@ -0,0 +1,16 @@ +package com.shxy.xyhkcamera.mapper; + +import com.shxy.xyhkcamera.entity.ModevEaifEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +public interface ModevEaifMapper extends BaseMapper { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/mapper/xml/DataEaifHMapper.xml b/src/main/java/com/shxy/xyhkcamera/mapper/xml/DataEaifHMapper.xml new file mode 100644 index 0000000..1c63135 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/mapper/xml/DataEaifHMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/shxy/xyhkcamera/mapper/xml/ModevEaifMapper.xml b/src/main/java/com/shxy/xyhkcamera/mapper/xml/ModevEaifMapper.xml new file mode 100644 index 0000000..829e47b --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/mapper/xml/ModevEaifMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java b/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java new file mode 100644 index 0000000..2c0fe3d --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java @@ -0,0 +1,16 @@ +package com.shxy.xyhkcamera.service; + +import com.shxy.xyhkcamera.entity.DataEaifHEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 红外区域测温数据表 服务类 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +public interface DataEaifHService extends IService { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/service/ModevEaifService.java b/src/main/java/com/shxy/xyhkcamera/service/ModevEaifService.java new file mode 100644 index 0000000..52a03cf --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/service/ModevEaifService.java @@ -0,0 +1,16 @@ +package com.shxy.xyhkcamera.service; + +import com.shxy.xyhkcamera.entity.ModevEaifEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +public interface ModevEaifService extends IService { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/service/impl/DataEaifHServiceImp.java b/src/main/java/com/shxy/xyhkcamera/service/impl/DataEaifHServiceImp.java new file mode 100644 index 0000000..daf37f9 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/service/impl/DataEaifHServiceImp.java @@ -0,0 +1,20 @@ +package com.shxy.xyhkcamera.service.impl; + +import com.shxy.xyhkcamera.entity.DataEaifHEntity; +import com.shxy.xyhkcamera.mapper.DataEaifHMapper; +import com.shxy.xyhkcamera.service.DataEaifHService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 红外区域测温数据表 服务实现类 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@Service +public class DataEaifHServiceImp extends ServiceImpl implements DataEaifHService { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/service/impl/ModevEaifServiceImp.java b/src/main/java/com/shxy/xyhkcamera/service/impl/ModevEaifServiceImp.java new file mode 100644 index 0000000..a906f41 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/service/impl/ModevEaifServiceImp.java @@ -0,0 +1,20 @@ +package com.shxy.xyhkcamera.service.impl; + +import com.shxy.xyhkcamera.entity.ModevEaifEntity; +import com.shxy.xyhkcamera.mapper.ModevEaifMapper; +import com.shxy.xyhkcamera.service.ModevEaifService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author jingjing + * @since 2024-05-20 + */ +@Service +public class ModevEaifServiceImp extends ServiceImpl implements ModevEaifService { + +} diff --git a/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java b/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java new file mode 100644 index 0000000..e656452 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java @@ -0,0 +1,67 @@ +package com.shxy.xyhkcamera.utils; + + + +import java.io.*; + +public class CommonUtil { + + //SDK时间解析 + public static String parseTime(int time) { + int year = (time >> 26) + 2000; + int month = (time >> 22) & 15; + int day = (time >> 17) & 31; + int hour = (time >> 12) & 31; + int min = (time >> 6) & 63; + int second = (time >> 0) & 63; + String sTime = year + "-" + month + "-" + day + "-" + hour + ":" + min + ":" + second; +// System.out.println(sTime); + return sTime; + + + } + + //分辨率解析 + public static String parseResolution(int dwResolution) { + int interlace = (((dwResolution) >> 28) & 0x1); + int width = ((((dwResolution) >> 19) & 0x1ff) << 3); //宽 + int hight = ((((dwResolution) >> 8) & 0x7ff) << 1); //高 + int fps = ((dwResolution) & 0xff); //帧率 + String result = width + "*" + hight + "_" + fps; + return result; + + + } + + /** + * 读取本地文件到数组中 + * + * @param filename 本地文件 + * @return 返回读取到的数据到 byte数组 + * @throws IOException + */ + public static byte[] toByteArray(String filename) throws IOException { + File file = new File(filename); + if (!file.exists()) { + throw new FileNotFoundException(filename); + } + ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length()); + BufferedInputStream in = new BufferedInputStream(new FileInputStream(file)); + try { + byte[] buffer = new byte[1024]; + int len; + while (-1 != (len = in.read(buffer, 0, buffer.length))) { + bos.write(buffer, 0, len); + } + return bos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + throw e; + } finally { + bos.close(); + in.close(); + } + } + + +} diff --git a/src/main/java/com/shxy/xyhkcamera/utils/MyBatisPlusGenerator.java b/src/main/java/com/shxy/xyhkcamera/utils/MyBatisPlusGenerator.java new file mode 100644 index 0000000..0b72b40 --- /dev/null +++ b/src/main/java/com/shxy/xyhkcamera/utils/MyBatisPlusGenerator.java @@ -0,0 +1,68 @@ +package com.shxy.xyhkcamera.utils; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.FastAutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; +import com.baomidou.mybatisplus.generator.config.po.TableField; +import com.baomidou.mybatisplus.generator.config.rules.DateType; +import com.baomidou.mybatisplus.generator.config.rules.IColumnType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class MyBatisPlusGenerator { + // 处理 all 情况 + protected static List getTables(String tables) { + return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(",")); + } + + public static void main(String[] args) { + String projectPath = System.getProperty("user.dir"); + FastAutoGenerator.create("jdbc:mysql://192.168.1.190:3306/cac", "root", "123456") + // 全局配置 + .globalConfig((scanner, builder) -> { + builder.author(scanner.apply("请输入作者名称?")); + builder.enableSwagger(); + builder.outputDir(projectPath + "/src/main/java"); + }) + // 包配置 + .packageConfig((scanner, builder) -> { + builder.parent(scanner.apply("请输入包名?")); + }) + // 策略配置 + .strategyConfig((scanner, builder) -> { + builder.addInclude(MyBatisPlusGenerator.getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"))) + .controllerBuilder().enableRestStyle().enableHyphenStyle().build(); + builder.serviceBuilder() + .formatServiceFileName("%sService") + .formatServiceImplFileName("%sServiceImp") + .build(); + //entity的策略配置 + builder.entityBuilder() + .enableLombok() + .enableTableFieldAnnotation() + .versionColumnName("version") + .logicDeleteColumnName("is_delete") + .columnNaming(NamingStrategy.underline_to_camel) + .idType(IdType.ASSIGN_ID) + .formatFileName("%sEntity") + .build(); + }) + .execute(); + } +} + + + diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 9b7a43f..fc07402 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -8,22 +8,86 @@ server: hkconfig: winpath: D:\\Workspace\\HK\\HCNetSDK.dll linuxpath: ere -# tomcat: -# # tomcat的URI编码 -# uri-encoding: UTF-8 -# # 连接数满后的排队数,默认为100 -# accept-count: 1000 -# max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可 -# threads: -# # tomcat最大线程数,默认为200 -# max: 800 -# # Tomcat启动初始化的线程数,默认值10 -# min-spare: 100 + tomcat: + # tomcat的URI编码 + uri-encoding: UTF-8 + # 连接数满后的排队数,默认为100 + accept-count: 1000 + max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可 + threads: + # tomcat最大线程数,默认为200 + max: 800 + # Tomcat启动初始化的线程数,默认值10 + min-spare: 100 -## 日志配置 -#logging: -# config: classpath:log4j2.xml -# level: -# com.shxy: trace -# org.springframework: warn +spring: + task: + scheduling: + pool: + size: 20 + # 数据源配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + url: jdbc:mysql://192.168.1.190:3306/iec104?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 + # 初始连接数 + initialSize: 10 + # 最小连接池数量 + minIdle: 20 + # 最大连接池数量 + maxActive: 50 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 30000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: root + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true +mybatis-plus: + configuration: + #开启驼峰命名自动映射 + map-underscore-to-camel-case: true + #开启日志打印 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # entity包路径,自行修改 + type-aliases-package: com.shxy.xyhkcamera.entity + #扫描mapper文件 + mapper-locations: classpath:mapper/*.xml + +# 日志配置 +logging: + config: classpath:log4j2.xml + level: + com.shxy: trace + org.springframework: warn diff --git a/src/main/resources/lib/libcrypto.so.1.1 b/src/main/resources/lib/libcrypto.so.1.1 deleted file mode 100644 index 88c3746..0000000 Binary files a/src/main/resources/lib/libcrypto.so.1.1 and /dev/null differ diff --git a/src/main/resources/lib/libhcnetsdk.so b/src/main/resources/lib/libhcnetsdk.so deleted file mode 100644 index 2607cee..0000000 Binary files a/src/main/resources/lib/libhcnetsdk.so and /dev/null differ diff --git a/src/main/resources/lib/libssl.so.1.1 b/src/main/resources/lib/libssl.so.1.1 deleted file mode 100644 index f3e4481..0000000 Binary files a/src/main/resources/lib/libssl.so.1.1 and /dev/null differ diff --git a/src/main/resources/lib/win/AudioRender.dll b/src/main/resources/lib/win/AudioRender.dll deleted file mode 100644 index 4935684..0000000 Binary files a/src/main/resources/lib/win/AudioRender.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemo.exe b/src/main/resources/lib/win/ClientDemo.exe deleted file mode 100644 index 75aedfa..0000000 Binary files a/src/main/resources/lib/win/ClientDemo.exe and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/ReadMe.txt b/src/main/resources/lib/win/ClientDemoDll/ReadMe.txt deleted file mode 100644 index 8006f36..0000000 --- a/src/main/resources/lib/win/ClientDemoDll/ReadMe.txt +++ /dev/null @@ -1 +0,0 @@ -The dll in this directoryiconv.dll,libxml2.dll,zlib1.dll,calib.dllonly used in ClientDemo. \ No newline at end of file diff --git a/src/main/resources/lib/win/ClientDemoDll/calib.dll b/src/main/resources/lib/win/ClientDemoDll/calib.dll deleted file mode 100644 index 328c63e..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/calib.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/iconv.dll b/src/main/resources/lib/win/ClientDemoDll/iconv.dll deleted file mode 100644 index df71882..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/iconv.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/libcrypto-1_1-x64.dll b/src/main/resources/lib/win/ClientDemoDll/libcrypto-1_1-x64.dll deleted file mode 100644 index f2f96d7..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/libcrypto-1_1-x64.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/libssl-1_1-x64.dll b/src/main/resources/lib/win/ClientDemoDll/libssl-1_1-x64.dll deleted file mode 100644 index 8034d79..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/libssl-1_1-x64.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/libxml2.dll b/src/main/resources/lib/win/ClientDemoDll/libxml2.dll deleted file mode 100644 index c8d57f3..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/libxml2.dll and /dev/null differ diff --git a/src/main/resources/lib/win/ClientDemoDll/zlib1.dll b/src/main/resources/lib/win/ClientDemoDll/zlib1.dll deleted file mode 100644 index 82913fb..0000000 Binary files a/src/main/resources/lib/win/ClientDemoDll/zlib1.dll and /dev/null differ diff --git a/src/main/resources/lib/win/GdiPlus.dll b/src/main/resources/lib/win/GdiPlus.dll deleted file mode 100644 index b759ed6..0000000 Binary files a/src/main/resources/lib/win/GdiPlus.dll and /dev/null differ diff --git a/src/main/resources/lib/win/GdiPlus.lib b/src/main/resources/lib/win/GdiPlus.lib deleted file mode 100644 index 6fb1bb6..0000000 Binary files a/src/main/resources/lib/win/GdiPlus.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCCore.dll b/src/main/resources/lib/win/HCCore.dll deleted file mode 100644 index 48f8411..0000000 Binary files a/src/main/resources/lib/win/HCCore.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCCore.lib b/src/main/resources/lib/win/HCCore.lib deleted file mode 100644 index 495c74a..0000000 Binary files a/src/main/resources/lib/win/HCCore.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDK.dll b/src/main/resources/lib/win/HCNetSDK.dll deleted file mode 100644 index 2ed412e..0000000 Binary files a/src/main/resources/lib/win/HCNetSDK.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDK.lib b/src/main/resources/lib/win/HCNetSDK.lib deleted file mode 100644 index ff8e9e2..0000000 Binary files a/src/main/resources/lib/win/HCNetSDK.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/AnalyzeData.dll b/src/main/resources/lib/win/HCNetSDKCom/AnalyzeData.dll deleted file mode 100644 index 2317b39..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/AnalyzeData.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/AudioIntercom.dll b/src/main/resources/lib/win/HCNetSDKCom/AudioIntercom.dll deleted file mode 100644 index 071a5e2..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/AudioIntercom.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/AudioRender.dll b/src/main/resources/lib/win/HCNetSDKCom/AudioRender.dll deleted file mode 100644 index 4935684..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/AudioRender.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.dll b/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.dll deleted file mode 100644 index bdb8406..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.lib b/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.lib deleted file mode 100644 index 0aa0d4c..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCAlarm.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCCoreDevCfg.dll b/src/main/resources/lib/win/HCNetSDKCom/HCCoreDevCfg.dll deleted file mode 100644 index 7cd924e..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCCoreDevCfg.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCDisplay.dll b/src/main/resources/lib/win/HCNetSDKCom/HCDisplay.dll deleted file mode 100644 index f0a2b7c..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCDisplay.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.dll b/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.dll deleted file mode 100644 index 3719694..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.lib b/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.lib deleted file mode 100644 index 7091c25..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCGeneralCfgMgr.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCIndustry.dll b/src/main/resources/lib/win/HCNetSDKCom/HCIndustry.dll deleted file mode 100644 index 9af77a1..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCIndustry.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCPlayBack.dll b/src/main/resources/lib/win/HCNetSDKCom/HCPlayBack.dll deleted file mode 100644 index 8d8e8a7..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCPlayBack.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCPreview.dll b/src/main/resources/lib/win/HCNetSDKCom/HCPreview.dll deleted file mode 100644 index 005656d..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCPreview.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCPreview.lib b/src/main/resources/lib/win/HCNetSDKCom/HCPreview.lib deleted file mode 100644 index 18d4d63..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCPreview.lib and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/HCVoiceTalk.dll b/src/main/resources/lib/win/HCNetSDKCom/HCVoiceTalk.dll deleted file mode 100644 index eb04a1e..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/HCVoiceTalk.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/OpenAL32.dll b/src/main/resources/lib/win/HCNetSDKCom/OpenAL32.dll deleted file mode 100644 index 4b35df4..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/OpenAL32.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/StreamTransClient.dll b/src/main/resources/lib/win/HCNetSDKCom/StreamTransClient.dll deleted file mode 100644 index a69e9bf..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/StreamTransClient.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/SystemTransform.dll b/src/main/resources/lib/win/HCNetSDKCom/SystemTransform.dll deleted file mode 100644 index f704e49..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/SystemTransform.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HCNetSDKCom/libiconv2.dll b/src/main/resources/lib/win/HCNetSDKCom/libiconv2.dll deleted file mode 100644 index 978e2fa..0000000 Binary files a/src/main/resources/lib/win/HCNetSDKCom/libiconv2.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HXVA.dll b/src/main/resources/lib/win/HXVA.dll deleted file mode 100644 index b7ebfcc..0000000 Binary files a/src/main/resources/lib/win/HXVA.dll and /dev/null differ diff --git a/src/main/resources/lib/win/HmMerge.dll b/src/main/resources/lib/win/HmMerge.dll deleted file mode 100644 index d46a6ac..0000000 Binary files a/src/main/resources/lib/win/HmMerge.dll and /dev/null differ diff --git a/src/main/resources/lib/win/LocalSensorAdd.dat b/src/main/resources/lib/win/LocalSensorAdd.dat deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/resources/lib/win/LocalXml.zip b/src/main/resources/lib/win/LocalXml.zip deleted file mode 100644 index 3620e68..0000000 Binary files a/src/main/resources/lib/win/LocalXml.zip and /dev/null differ diff --git a/src/main/resources/lib/win/MP_Render.dll b/src/main/resources/lib/win/MP_Render.dll deleted file mode 100644 index e5cde63..0000000 Binary files a/src/main/resources/lib/win/MP_Render.dll and /dev/null differ diff --git a/src/main/resources/lib/win/NPQos.dll b/src/main/resources/lib/win/NPQos.dll deleted file mode 100644 index c709f56..0000000 Binary files a/src/main/resources/lib/win/NPQos.dll and /dev/null differ diff --git a/src/main/resources/lib/win/OpenAL32.dll b/src/main/resources/lib/win/OpenAL32.dll deleted file mode 100644 index 4b35df4..0000000 Binary files a/src/main/resources/lib/win/OpenAL32.dll and /dev/null differ diff --git a/src/main/resources/lib/win/PlayCtrl.dll b/src/main/resources/lib/win/PlayCtrl.dll deleted file mode 100644 index 2a5eb97..0000000 Binary files a/src/main/resources/lib/win/PlayCtrl.dll and /dev/null differ diff --git a/src/main/resources/lib/win/PlayCtrl.lib b/src/main/resources/lib/win/PlayCtrl.lib deleted file mode 100644 index ddcf2f4..0000000 Binary files a/src/main/resources/lib/win/PlayCtrl.lib and /dev/null differ diff --git a/src/main/resources/lib/win/SuperRender.dll b/src/main/resources/lib/win/SuperRender.dll deleted file mode 100644 index b00c0c2..0000000 Binary files a/src/main/resources/lib/win/SuperRender.dll and /dev/null differ diff --git a/src/main/resources/lib/win/YUVProcess.dll b/src/main/resources/lib/win/YUVProcess.dll deleted file mode 100644 index d86ec3f..0000000 Binary files a/src/main/resources/lib/win/YUVProcess.dll and /dev/null differ diff --git a/src/main/resources/lib/win/hlog.dll b/src/main/resources/lib/win/hlog.dll deleted file mode 100644 index fe2298a..0000000 Binary files a/src/main/resources/lib/win/hlog.dll and /dev/null differ diff --git a/src/main/resources/lib/win/hpr.dll b/src/main/resources/lib/win/hpr.dll deleted file mode 100644 index eef0d55..0000000 Binary files a/src/main/resources/lib/win/hpr.dll and /dev/null differ diff --git a/src/main/resources/lib/win/libcrypto-1_1-x64.dll b/src/main/resources/lib/win/libcrypto-1_1-x64.dll deleted file mode 100644 index 6731338..0000000 Binary files a/src/main/resources/lib/win/libcrypto-1_1-x64.dll and /dev/null differ diff --git a/src/main/resources/lib/win/libmmd.dll b/src/main/resources/lib/win/libmmd.dll deleted file mode 100644 index 8becb5e..0000000 Binary files a/src/main/resources/lib/win/libmmd.dll and /dev/null differ diff --git a/src/main/resources/lib/win/libssl-1_1-x64.dll b/src/main/resources/lib/win/libssl-1_1-x64.dll deleted file mode 100644 index ac5e8fd..0000000 Binary files a/src/main/resources/lib/win/libssl-1_1-x64.dll and /dev/null differ diff --git a/src/main/resources/lib/win/zlib1.dll b/src/main/resources/lib/win/zlib1.dll deleted file mode 100644 index 9c37a84..0000000 Binary files a/src/main/resources/lib/win/zlib1.dll and /dev/null differ diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index b16e25c..6f9ad53 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -21,8 +21,8 @@ value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}[%thread] %style{%logger{36}}{cyan} : %msg%n"/> - - + + @@ -45,10 +45,10 @@ - + - + @@ -61,10 +61,10 @@ - + - + @@ -76,10 +76,10 @@ - + - + @@ -87,14 +87,14 @@ - - - - - - - - + + + + + + + + diff --git a/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java b/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java index ee8b77d..0153be3 100644 --- a/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java +++ b/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java @@ -1,5 +1,6 @@ package com.shxy.xyhkcamera; +import com.sun.jna.Pointer; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -7,8 +8,10 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class XyhkcameraApplicationTests { -// @Autowired -// HcNetSdkUtil hcNetSdkUtil; + @Autowired + HcNetSdkUtil hcNetSdkUtil; + private int handle; + @Test void contextLoads() { // hcNetSdkUtil.init(); @@ -21,16 +24,31 @@ class XyhkcameraApplicationTests { // String loadLibrary = OSUtils.getLoadLibrary(); // System.out.println(loadLibrary); - - HCNetSDK.NET_DVR_SDKSTATE sdkState = new HCNetSDK.NET_DVR_SDKSTATE(); - //获取当前SDK状态信息 - boolean result = SdkInitService.hCNetSDK.NET_DVR_GetSDKState(sdkState); - if (result) { - sdkState.read(); - } else { - int error = SdkInitService.hCNetSDK.NET_DVR_GetLastError(); + hcNetSdkUtil.init(); + HCNetSDK instance = hcNetSdkUtil.createSDKInstance(); + int admin = hcNetSdkUtil.login_V40("192.168.1.64", (short) 8000, "admin", "SHxy@510"); + if (admin != -1) { + HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND cond = new HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND(); + cond.dwSize = cond.size(); + cond.byRuleID = 1; + cond.dwChan = 2; + + HCNetSDK.FRemoteConfigCallBack cbStateCallBack = new HCNetSDK.FRemoteConfigCallBack() { + @Override + public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) { + System.out.println("dfsafasd"); + instance.NET_DVR_StopRemoteConfig(handle); + + } + }; + handle = instance.NET_DVR_StartRemoteConfig(admin, HCNetSDK.NET_DVR_GET_REALTIME_THERMOMETRY, cond.getPointer(), cond.size(), cbStateCallBack, null); + if (handle < 0) { + System.out.println(instance.NET_DVR_GetLastError()); + } + System.out.println("fdsafa"); } + } }