org.springframework.boot
@@ -140,6 +148,15 @@
spring-boot-maven-plugin
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/shxy/xyhkcamera/TaskPoolConfig.java b/src/main/java/com/shxy/xyhkcamera/TaskPoolConfig.java
new file mode 100644
index 0000000..0f534f7
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/TaskPoolConfig.java
@@ -0,0 +1,37 @@
+package com.shxy.xyhkcamera;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+@EnableAsync
+public class TaskPoolConfig {
+
+ @Bean("syncExecutorPool")
+ public Executor taskExecutor() {
+ ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
+ // 核心池大小
+ taskExecutor.setCorePoolSize(5);
+ // 最大线程数
+ taskExecutor.setMaxPoolSize(10);
+ // 队列程度
+ taskExecutor.setQueueCapacity(100);
+ // 线程空闲时间
+ taskExecutor.setKeepAliveSeconds(60);
+ // 线程前缀名称
+ taskExecutor.setThreadNamePrefix("syncExecutor--");
+ // 该方法用来设置 线程池关闭 的时候 等待 所有任务都完成后,再继续 销毁 其他的 Bean,
+ // 这样这些 异步任务 的 销毁 就会先于 数据库连接池对象 的销毁。
+ taskExecutor.setWaitForTasksToCompleteOnShutdown(true);
+ // 任务的等待时间 如果超过这个时间还没有销毁就 强制销毁,以确保应用最后能够被关闭,而不是阻塞住。
+ taskExecutor.setAwaitTerminationSeconds(300);
+ // 线程不够用时由调用的线程处理该任务
+ taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ return taskExecutor;
+ }
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/TestDemo.java b/src/main/java/com/shxy/xyhkcamera/TestDemo.java
deleted file mode 100644
index 2421655..0000000
--- a/src/main/java/com/shxy/xyhkcamera/TestDemo.java
+++ /dev/null
@@ -1,858 +0,0 @@
-//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 ffe84e3..7820b84 100644
--- a/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java
+++ b/src/main/java/com/shxy/xyhkcamera/XyhkcameraApplication.java
@@ -4,11 +4,15 @@ import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@Slf4j
-@MapperScan("com.shxy")
+@MapperScan(basePackages = {"com.shxy.xyhkcamera.mapper"})
+@ComponentScan(basePackages = {"com.shxy"})
+@EnableAsync
public class XyhkcameraApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java b/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java
index 99268c5..43a9cb6 100644
--- a/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java
+++ b/src/main/java/com/shxy/xyhkcamera/entity/DataEaifHEntity.java
@@ -56,8 +56,28 @@ public class DataEaifHEntity implements Serializable {
@TableField("mid")
private Double mid;
+ @Override
+ public String toString() {
+ return "DataEaifHEntity{" +
+ "dataId=" + dataId +
+ ", eqmid=" + eqmid +
+ ", areaid=" + areaid +
+ ", capturetime=" + capturetime +
+ ", maxtemp=" + maxtemp +
+ ", mintemp=" + mintemp +
+ ", avgtemp=" + avgtemp +
+ ", unit=" + unit +
+ ", type=" + type +
+ ", mid=" + mid +
+ ", std=" + std +
+ ", isupload=" + isupload +
+ '}';
+ }
+
@TableField("std")
private Double std;
private Integer isupload;
+
+
}
diff --git a/src/main/java/com/shxy/xyhkcamera/hk/HCNetSDK.java b/src/main/java/com/shxy/xyhkcamera/hk/HCNetSDK.java
index d183da9..5523a05 100644
--- a/src/main/java/com/shxy/xyhkcamera/hk/HCNetSDK.java
+++ b/src/main/java/com/shxy/xyhkcamera/hk/HCNetSDK.java
@@ -7,13 +7,12 @@ import com.sun.jna.examples.win32.W32API.HWND;
import com.sun.jna.ptr.ByteByReference;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.ShortByReference;
-import com.sun.jna.win32.StdCallLibrary;
import java.util.Arrays;
import java.util.List;
//SDK接口说明,HCNetSDK.dll
-public interface HCNetSDK extends StdCallLibrary {
+public interface HCNetSDK extends Library {
/**
* 通过这个常量,就可以获得这个接口的实例,从而使用接口的方法,也就是调用外部dll/so的函数
@@ -3974,7 +3973,7 @@ DVR实现巡航数据结构
public static class NET_DVR_CLIENTINFO extends Structure {
public int lChannel;
public int lLinkMode;
- public HWND hPlayWnd;
+ public W32API.HWND hPlayWnd;
public String sMultiCastIP;
}
@@ -9680,9 +9679,9 @@ DVR实现巡航数据结构
boolean NET_DVR_UnlockFileByName(int lUserID, String sUnlockFileName);
- int NET_DVR_PlayBackByName(int lUserID, String sPlayBackFileName, HWND hWnd);
+ int NET_DVR_PlayBackByName(int lUserID, String sPlayBackFileName, W32API.HWND hWnd);
- int NET_DVR_PlayBackByTime(int lUserID, int lChannel, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, HWND hWnd);
+ int NET_DVR_PlayBackByTime(int lUserID, int lChannel, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime, W32API.HWND hWnd);
int NET_DVR_PlayBackByTime_V40(int lUserID, NET_DVR_VOD_PARA pVodPara);
@@ -10758,4 +10757,3 @@ interface USER32 extends W32API {
int FillRect(HDC hDC, com.sun.jna.examples.win32.GDI32.RECT lprc, HANDLE hbr);
}
-
diff --git a/src/main/java/com/shxy/xyhkcamera/hk/HKConfigEnum.java b/src/main/java/com/shxy/xyhkcamera/hk/HKConfigEnum.java
new file mode 100644
index 0000000..d9db31e
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/hk/HKConfigEnum.java
@@ -0,0 +1,69 @@
+package com.shxy.xyhkcamera.hk;
+
+public class HKConfigEnum {
+
+ //回调状态值
+ public enum NET_SDK_CALLBACK_TYPE {
+ NET_SDK_CALLBACK_TYPE_STATUS(0),
+ NET_SDK_CALLBACK_TYPE_PROGRESS(1),
+ NET_SDK_CALLBACK_TYPE_DATA(2);
+
+ private int value;
+
+ private NET_SDK_CALLBACK_TYPE(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ }
+
+ //规则标定类型:0- 点,1- 框,2- 线
+// 数据库中1->点 2->线 3->框
+ public enum BYRULECALIBTYPE {
+ POINT(0, 1),
+ FRAME(1, 3),
+ LINE(2, 2);
+
+ private int value;
+ private int mysqlvalue;
+
+ private BYRULECALIBTYPE(int value, int mysqlvalue) {
+ this.value = value;
+ this.mysqlvalue = mysqlvalue;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public int getMysqlvalue() {
+ return mysqlvalue;
+ }
+ }
+
+ //测温单位: 0- 摄氏度(℃),1- 华氏度(℉),2- 开尔文(K)
+// 1=>摄氏度 2=>华氏度
+ public enum BYTHERMOMETRYUNIT {
+ SSD(0, 1),
+ HSD(1, 2),
+ KEW(2, 3);
+
+ private int value;
+ private int mysqlvalue;
+
+ private BYTHERMOMETRYUNIT(int value, int mysqlvalue) {
+ this.value = value;
+ this.mysqlvalue = mysqlvalue;
+ }
+
+ public int getValue() {
+ return value;
+ }
+
+ public int getMysqlvalue() {
+ return mysqlvalue;
+ }
+ }
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/hk/HcNetSdkUtil.java b/src/main/java/com/shxy/xyhkcamera/hk/HcNetSdkUtil.java
index 08114eb..8830fb9 100644
--- a/src/main/java/com/shxy/xyhkcamera/hk/HcNetSdkUtil.java
+++ b/src/main/java/com/shxy/xyhkcamera/hk/HcNetSdkUtil.java
@@ -17,8 +17,6 @@ import java.util.Objects;
@Component
public class HcNetSdkUtil {
- private static final Logger logger = LoggerFactory.getLogger(HcNetSdkUtil.class);
-
private HCNetSDK hCNetSDK = null;
static FExceptionCallBack_Imp fExceptionCallBack;
diff --git a/src/main/java/com/shxy/xyhkcamera/hk/OSUtils.java b/src/main/java/com/shxy/xyhkcamera/hk/OSUtils.java
index 3ba3c50..7998caf 100644
--- a/src/main/java/com/shxy/xyhkcamera/hk/OSUtils.java
+++ b/src/main/java/com/shxy/xyhkcamera/hk/OSUtils.java
@@ -82,7 +82,7 @@ public class OSUtils {
//loadLibrary = "/usr/lib64/lib/hkliblinux64/";
//方式二:配置LD_LIBRARY_PATH环境变量加载库文件;配置/etc/ld.so.conf,加上你自己的Java工程所需要的so文件的路径
//针对方式二,无需添加前缀,程序会从linux系统的so共享库中查找libhcnetsdk.so
- loadLibrary = "";
+ loadLibrary = userDir+File.separator+"hkliblinux64"+ File.separator;
library = "libhcnetsdk.so";
}
log.info("================= Load library Path :{} ==================", loadLibrary + library);
diff --git a/src/main/java/com/shxy/xyhkcamera/hk/erew.java b/src/main/java/com/shxy/xyhkcamera/hk/erew.java
new file mode 100644
index 0000000..355ca33
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/hk/erew.java
@@ -0,0 +1,4 @@
+package com.shxy.xyhkcamera.hk;
+
+public enum erew {
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/interfacesss/Testint.java b/src/main/java/com/shxy/xyhkcamera/interfacesss/Testint.java
new file mode 100644
index 0000000..3c080d8
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/interfacesss/Testint.java
@@ -0,0 +1,18 @@
+package com.shxy.xyhkcamera.interfacesss;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.shxy.xyhkcamera.entity.DataEaifHEntity;
+
+/**
+ *
+ * 红外区域测温数据表 服务类
+ *
+ *
+ * @author jingjing
+ * @since 2024-05-20
+ */
+public interface Testint{
+
+ void test(DataEaifHEntity entity);
+
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/interfacesss/Testintimpl.java b/src/main/java/com/shxy/xyhkcamera/interfacesss/Testintimpl.java
new file mode 100644
index 0000000..25085a3
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/interfacesss/Testintimpl.java
@@ -0,0 +1,16 @@
+package com.shxy.xyhkcamera.interfacesss;
+
+import com.shxy.xyhkcamera.entity.DataEaifHEntity;
+import com.shxy.xyhkcamera.service.DataEaifHService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Testintimpl implements Testint {
+ @Autowired
+ DataEaifHService dataEaifHService;
+ @Override
+ public void test(DataEaifHEntity entity) {
+ dataEaifHService.save(entity);
+ }
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/schedule/ScheduledTask.java b/src/main/java/com/shxy/xyhkcamera/schedule/ScheduledTask.java
index d4f3843..61eac94 100644
--- a/src/main/java/com/shxy/xyhkcamera/schedule/ScheduledTask.java
+++ b/src/main/java/com/shxy/xyhkcamera/schedule/ScheduledTask.java
@@ -1,6 +1,7 @@
package com.shxy.xyhkcamera.schedule;
import com.shxy.xyhkcamera.service.TempMeasureService;
+import com.shxy.xyhkcamera.service.impl.TempMeasureServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
diff --git a/src/main/java/com/shxy/xyhkcamera/service/AsyncService.java b/src/main/java/com/shxy/xyhkcamera/service/AsyncService.java
new file mode 100644
index 0000000..d728991
--- /dev/null
+++ b/src/main/java/com/shxy/xyhkcamera/service/AsyncService.java
@@ -0,0 +1,19 @@
+package com.shxy.xyhkcamera.service;
+
+import com.shxy.xyhkcamera.entity.DataEaifHEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AsyncService {
+
+ @Autowired
+ DataEaifHService dataEaifHService;
+
+ @Async("syncExecutorPool")
+ public void executeAsyncTask(DataEaifHEntity eaifHEntity) {
+ // 异步执行的任务
+ dataEaifHService.save(eaifHEntity);
+ }
+}
diff --git a/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java b/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java
index 2c0fe3d..0a7537c 100644
--- a/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java
+++ b/src/main/java/com/shxy/xyhkcamera/service/DataEaifHService.java
@@ -2,6 +2,7 @@ package com.shxy.xyhkcamera.service;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.stereotype.Service;
/**
*
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author jingjing
* @since 2024-05-20
*/
+@Service
public interface DataEaifHService extends IService {
}
diff --git a/src/main/java/com/shxy/xyhkcamera/service/impl/TempMeasureServiceImpl.java b/src/main/java/com/shxy/xyhkcamera/service/impl/TempMeasureServiceImpl.java
index ed57209..7dfabfc 100644
--- a/src/main/java/com/shxy/xyhkcamera/service/impl/TempMeasureServiceImpl.java
+++ b/src/main/java/com/shxy/xyhkcamera/service/impl/TempMeasureServiceImpl.java
@@ -1,29 +1,269 @@
package com.shxy.xyhkcamera.service.impl;
+import com.alibaba.druid.sql.visitor.functions.If;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.shxy.xyhkcamera.entity.ModevEaifEntity;
+import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.shxy.xyhkcamera.entity.ModevEntity;
-import com.shxy.xyhkcamera.service.ModevEaifService;
+import com.shxy.xyhkcamera.hk.HCNetSDK;
+import com.shxy.xyhkcamera.hk.HKConfigEnum;
+import com.shxy.xyhkcamera.hk.HcNetSdkUtil;
+import com.shxy.xyhkcamera.interfacesss.Testint;
+import com.shxy.xyhkcamera.interfacesss.Testintimpl;
+import com.shxy.xyhkcamera.mapper.DataEaifHMapper;
+import com.shxy.xyhkcamera.service.AsyncService;
+import com.shxy.xyhkcamera.service.DataEaifHService;
import com.shxy.xyhkcamera.service.ModevService;
import com.shxy.xyhkcamera.service.TempMeasureService;
+import com.shxy.xyhkcamera.utils.CommonUtil;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
-import java.sql.Wrapper;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.time.LocalDateTime;
+import java.util.Date;
import java.util.List;
+
@Service
@Slf4j
public class TempMeasureServiceImpl implements TempMeasureService {
@Autowired
- ModevServiceImp modevService;
+ ModevService modevService;
+ @Autowired
+ DataEaifHService dataEaifHService;
+ @Autowired
+ DataEaifHMapper dataEaifHMapper;
+ @Autowired
+ HcNetSdkUtil hcNetSdkUtil;
+ @Autowired
+ CommonUtil commonUtil;
+
+ @Autowired
+ AsyncService asyncService;
+// @Autowired
+// Testint testint;
+
+ /**
+ * 海康用户名
+ */
+ @Value("${hkconfig.user}")
+ private String user;
+ /**
+ * 海康密码
+ */
+ @Value("${hkconfig.password}")
+ private String password;
+ private int handle = -1;
+ private int test = 0;
+ private Connection conn;
+
@Override
public void measure() {
-// hcNetSdkUtil.createSDKInstance();
-// List list = modevService.list(Wrappers.lambdaQuery(ModevEntity.class).eq(ModevEntity::getModevtid, 9));
+
+ hcNetSdkUtil.init();
+ HCNetSDK instance = hcNetSdkUtil.createSDKInstance();
+ List list = modevService.list(Wrappers.lambdaQuery(ModevEntity.class).eq(ModevEntity::getModevtid, 9));
+
+
+ if (CollectionUtils.isNotEmpty(list)) {
+// for (int i = 0; i < list.size(); i++) {
+ for (int i = 0; i < 1; i++) {
+// List list1 = dataEaifHService.list(Wrappers.lambdaQuery(DataEaifHEntity.class).eq(DataEaifHEntity::getDataId, 12891));
+// DataEaifHEntity entitys = new DataEaifHEntity();
+// entitys.setEqmid(384);
+// entitys.setMaxtemp((double) 0);
+// entitys.setAreaid(1);
+// entitys.setCapturetime(LocalDateTime.now());
+// entitys.setMintemp((double) 0);
+// entitys.setAvgtemp((double) 0);
+// entitys.setType((byte) HKConfigEnum.BYRULECALIBTYPE.POINT.getMysqlvalue());
+// entitys.setMid(Double.valueOf(0));
+// dataEaifHService.save(entitys);
+
+// ModevEntity entitys = new ModevEntity();
+// entitys.setModevtid(1919);
+// entitys.setZsbid(1);
+// entitys.setIedid(1);
+// entitys.setAddress(12112);
+// modevService.save(entitys);
+
+ ModevEntity modevEntity = list.get(i);
+ Integer id = modevEntity.getId();
+ String ip = modevEntity.getIp();
+ String port = modevEntity.getPort();
+// Short aShort = Short.valueOf(port);
+// int admin = hcNetSdkUtil.login_V40(ip, aShort, user, password);
+ int admin = hcNetSdkUtil.login_V40("192.168.1.64", (short) 8000, user, password);
+ if (admin != -1) {
+ log.info("登录成功 " + "IP:" + ip + " " + port);
+ HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND cond = new HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND();
+ cond.read();
+ cond.dwSize = cond.size();
+ cond.byRuleID = 1;
+ cond.dwChan = 2;
+ cond.wInterval = 0;
+ cond.write();
+ HCNetSDK.FRemoteConfigCallBack cbStateCallBack = new HCNetSDK.FRemoteConfigCallBack() {
+ @Override
+ public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
+// log.info("111111111" + Integer.toHexString(dwType));
+// new Thread(new Runnable() {
+// @Override
+// public void run() {
+// log.info("3333333" + Integer.toHexString(dwType));
+// DataEaifHEntity entitys = new DataEaifHEntity();
+// entitys.setEqmid(384);
+// entitys.setMaxtemp((double) 0);
+// entitys.setAreaid(1);
+// entitys.setCapturetime(LocalDateTime.now());
+// entitys.setMintemp((double) 0);
+// entitys.setAvgtemp((double) 0);
+// entitys.setType((byte) HKConfigEnum.BYRULECALIBTYPE.POINT.getMysqlvalue());
+// entitys.setMid(Double.valueOf(0));
+// dataEaifHService.save(entitys);
+// log.info("222222222222222" + Integer.toHexString(dwType));
+// }
+// }).start();
+
+ test++;
+ log.info("长连接返回: dwType:" + Integer.toHexString(dwType));
+ if (dwType == HKConfigEnum.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA.getValue()) {
+ HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD data = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
+ data.write();
+ Pointer pointer = data.getPointer();
+ pointer.write(0, lpBuffer.getByteArray(0, data.size()), 0, data.size());
+ data.read();
+ log.info("返回的数据:" + data.toString());
+ log.info("开始数据整理");
+ byte byRuleCalibType = data.byRuleCalibType;
+ byte byThermometryUnit = data.byThermometryUnit;
+ DataEaifHEntity entity = new DataEaifHEntity();
+ entity.setEqmid(id);
+ entity.setAreaid(1);
+ if (byThermometryUnit == HKConfigEnum.BYTHERMOMETRYUNIT.SSD.getValue()) {
+ entity.setUnit((byte) HKConfigEnum.BYTHERMOMETRYUNIT.SSD.getMysqlvalue());
+ } else if (byThermometryUnit == HKConfigEnum.BYTHERMOMETRYUNIT.HSD.getValue()) {
+ entity.setUnit((byte) HKConfigEnum.BYTHERMOMETRYUNIT.HSD.getMysqlvalue());
+ } else if (byThermometryUnit == HKConfigEnum.BYTHERMOMETRYUNIT.KEW.getValue()) {
+ entity.setUnit((byte) HKConfigEnum.BYTHERMOMETRYUNIT.KEW.getMysqlvalue());
+ }
+ log.info("数据整理1");
+ //数据库中1->点2->线3->框
+ if (byRuleCalibType == HKConfigEnum.BYRULECALIBTYPE.POINT.getValue()) {
+ float fTemperature = data.struPointThermCfg.fTemperature;
+ double maxtemp = new BigDecimal(fTemperature).setScale(4, BigDecimal.ROUND_DOWN).doubleValue();
+ entity.setMaxtemp(maxtemp);
+ entity.setMintemp(maxtemp);
+ entity.setAvgtemp(maxtemp);
+ entity.setType((byte) HKConfigEnum.BYRULECALIBTYPE.POINT.getMysqlvalue());
+ entity.setMid(Double.valueOf(0));
+ } else if (byRuleCalibType == HKConfigEnum.BYRULECALIBTYPE.FRAME.getValue() || byRuleCalibType == HKConfigEnum.BYRULECALIBTYPE.LINE.getValue()) {
+ HCNetSDK.NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg = data.struLinePolygonThermCfg;
+ float fAverageTemperature = struLinePolygonThermCfg.fAverageTemperature;//平均温度
+ float fMinTemperature = struLinePolygonThermCfg.fMinTemperature;
+ float fMaxTemperature = struLinePolygonThermCfg.fMaxTemperature;
+ float fTemperatureDiff = struLinePolygonThermCfg.fTemperatureDiff;
+ entity.setMaxtemp(new BigDecimal(fMaxTemperature).setScale(4, BigDecimal.ROUND_DOWN).doubleValue());
+ entity.setMintemp(new BigDecimal(fMinTemperature).setScale(4, BigDecimal.ROUND_DOWN).doubleValue());
+ entity.setAvgtemp(new BigDecimal(fAverageTemperature).setScale(4, BigDecimal.ROUND_DOWN).doubleValue());
+ entity.setMid(new BigDecimal(fTemperatureDiff).setScale(4, BigDecimal.ROUND_DOWN).doubleValue());
+ if (byRuleCalibType == HKConfigEnum.BYRULECALIBTYPE.FRAME.getValue()) {
+ entity.setType((byte) HKConfigEnum.BYRULECALIBTYPE.FRAME.getMysqlvalue());
+ } else if (byRuleCalibType == HKConfigEnum.BYRULECALIBTYPE.LINE.getValue()) {
+ entity.setType((byte) HKConfigEnum.BYRULECALIBTYPE.LINE.getMysqlvalue());
+ }
+ }
+ log.info("数据整理2");
+ entity.setStd(Double.valueOf(0));
+ entity.setCapturetime(LocalDateTime.now());
+ log.info("开始插入");
+ log.info("数据是:" + entity.toString());
+ asyncService.executeAsyncTask(entity);
+// Testintimpl testintimpl = new Testintimpl();
+// testintimpl.test(entity);
+
+
+// String sql = "INSERT INTO data_eaif_h(eqmid,areaid,capturetime,maxtemp,mintemp,avgtemp,unit,type,mid,std) values('" + 666 + "','1','" + new Date() + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "','" + 1 + "')";
+// System.out.println(sql);
+// help.getConnection();
+// int ret = help.excuteUpdate(sql);
+// log.info("啦啦啦" + ret);
+// try {
+// conn.close();
+// } catch (SQLException throwables) {
+// throwables.printStackTrace();
+// }
+// if (test == 1) {
+// DataEaifHEntity entitys = new DataEaifHEntity();
+// entitys.setEqmid(384);
+// entitys.setMaxtemp((double) 0);
+// entitys.setAreaid(1);
+// entitys.setCapturetime(LocalDateTime.now());
+// entitys.setMintemp((double) 0);
+// entitys.setAvgtemp((double) 0);
+// entitys.setType((byte) HKConfigEnum.BYRULECALIBTYPE.POINT.getMysqlvalue());
+// entitys.setMid(Double.valueOf(0));
+// dataEaifHService.save(entitys);
+////
+//// ModevEntity entitys = new ModevEntity();
+//// entitys.setModevtid(1919);
+//// entitys.setZsbid(1);
+//// entitys.setIedid(1);
+//// entitys.setAddress(12112);
+//// modevService.save(entitys);
+// }
+
+ if (handle != -1) {
+ log.info("开始退出");
+ instance.NET_DVR_StopRemoteConfig(handle);
+ instance.NET_DVR_Logout(admin);
+ }
+ } else {
+ if (handle != -1) {
+ instance.NET_DVR_StopRemoteConfig(handle);
+ instance.NET_DVR_Logout(admin);
+ }
+ }
+ }
+ };
+ //NET_DVR_GET_REALTIME_THERMOMETRY 实时温度检测 NET_DVR_GET_MANUALTHERM_INFO 手动测温实时获取
+ handle = instance.NET_DVR_StartRemoteConfig(admin, HCNetSDK.NET_DVR_GET_REALTIME_THERMOMETRY, cond.getPointer(), cond.size(), cbStateCallBack, null);
+ if (handle < 0) {
+ int j = instance.NET_DVR_GetLastError();
+ IntByReference intByReference = new IntByReference(j);
+ log.error("长连接连接失败 " + "错误码:" + j + " 错误信息:" + instance.NET_DVR_GetErrorMsg(intByReference));
+ } else {
+ log.info("长连接连接成功!!!");
+ }
+
+// try {
+// Thread.sleep(5000);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+
+// }
+ } else {
+ log.error("登录失败 " + "IP:" + ip + " " + port);
+ }
+ }
+ } else {
+ log.info("尚未配置红外设备!!!");
+ }
}
+
+
+
}
diff --git a/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java b/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java
index e656452..fdee9b5 100644
--- a/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java
+++ b/src/main/java/com/shxy/xyhkcamera/utils/CommonUtil.java
@@ -2,10 +2,17 @@ package com.shxy.xyhkcamera.utils;
+import com.shxy.xyhkcamera.entity.DataEaifHEntity;
+import com.shxy.xyhkcamera.service.DataEaifHService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
import java.io.*;
+@Component
public class CommonUtil {
+
//SDK时间解析
public static String parseTime(int time) {
int year = (time >> 26) + 2000;
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 7989f5a..4a23664 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -1,7 +1,7 @@
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
- port: 8095
+ port: 8096
servlet:
# 应用的访问路径
context-path: /xymanager
@@ -18,8 +18,8 @@ server:
min-spare: 100
hkconfig:
- winpath: D:\\Workspace\\HK\\HCNetSDK.dll
- linuxpath: ere
+ user: admin
+ password: SHxy@510
spring:
task:
@@ -79,16 +79,16 @@ mybatis-plus:
#开启驼峰命名自动映射
map-underscore-to-camel-case: true
#开启日志打印
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# entity包路径,自行修改
type-aliases-package: com.shxy.xyhkcamera.entity
#扫描mapper文件
- mapper-locations: classpath:mapper/*.xml
+ mapper-locations: classpath:/com/shxy/xyhkcamera/mapper/xml/*.xml
# 日志配置
logging:
config: classpath:log4j2.xml
level:
- com.shxy: trace
+ com.shxy: debug
org.springframework: warn
diff --git a/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java b/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java
index 495639a..741acc9 100644
--- a/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java
+++ b/src/test/java/com/shxy/xyhkcamera/XyhkcameraApplicationTests.java
@@ -24,7 +24,7 @@ class XyhkcameraApplicationTests {
HcNetSdkUtil hcNetSdkUtil;
@Autowired
- ModevServiceImp modevService;
+ ModevService modevService;
@Autowired
ModevMapper modevMapper;
@@ -42,47 +42,47 @@ class XyhkcameraApplicationTests {
// String loadLibrary = OSUtils.getLoadLibrary();
// System.out.println(loadLibrary);
- 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.read();
- cond.dwSize = cond.size();
- cond.byRuleID = 0;
- cond.dwChan = 2;
- cond.write();
- HCNetSDK.FRemoteConfigCallBack cbStateCallBack = new HCNetSDK.FRemoteConfigCallBack() {
- @Override
- public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
-
- System.out.println("报警事件类型: lCommand:" + Integer.toHexString(dwType));
- HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD byte_array1 = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
- byte_array1.write();
- Pointer pbyte_array1 = byte_array1.getPointer();
- pbyte_array1.write(0, lpBuffer.getByteArray(0, byte_array1.size()), 0, byte_array1.size());
- byte_array1.read();
- System.out.println("dfsdafd");
-
-
- 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) {
- int i = instance.NET_DVR_GetLastError();
- IntByReference intByReference = new IntByReference(i);
- System.out.println(i + " " + instance.NET_DVR_GetErrorMsg(intByReference));
- }
- System.out.println("fdsafa");
- }
+// 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.read();
+// cond.dwSize = cond.size();
+// cond.byRuleID = 0;
+// cond.dwChan = 2;
+// cond.write();
+// HCNetSDK.FRemoteConfigCallBack cbStateCallBack = new HCNetSDK.FRemoteConfigCallBack() {
+// @Override
+// public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
+//
+// System.out.println("报警事件类型: lCommand:" + Integer.toHexString(dwType));
+// HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD byte_array1 = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
+// byte_array1.write();
+// Pointer pbyte_array1 = byte_array1.getPointer();
+// pbyte_array1.write(0, lpBuffer.getByteArray(0, byte_array1.size()), 0, byte_array1.size());
+// byte_array1.read();
+// System.out.println("dfsdafd");
+//
+//
+// 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) {
+// int i = instance.NET_DVR_GetLastError();
+// IntByReference intByReference = new IntByReference(i);
+// System.out.println(i + " " + instance.NET_DVR_GetErrorMsg(intByReference));
+// }
+// System.out.println("fdsafa");
+// }
// tempMeasureService.measure();
-// List list = modevService.list(Wrappers.lambdaQuery(ModevEntity.class).eq(ModevEntity::getModevtid, 10));
-// System.out.println(list);
+ List list = modevService.list(Wrappers.lambdaQuery(ModevEntity.class).eq(ModevEntity::getModevtid, 10));
+ System.out.println(list);
// List modevEntities = modevMapper.selectList(Wrappers.lambdaQuery(ModevEntity.class).eq(ModevEntity::getModevtid, 10));
// System.out.println(modevEntities);