数据库新增

master
liuguijing 1 year ago
parent 2c8d7feb95
commit 4a8178e10a

@ -16,6 +16,11 @@
<properties>
<java.version>1.8</java.version>
<spring-boot-dependencies.version>2.5.6</spring-boot-dependencies.version>
<druid.version>1.2.8</druid.version>
<swagger.version>3.0.0</swagger.version>
<knife4j-spring-boot.version>3.0.2</knife4j-spring-boot.version>
<swagger-annotations.version>1.5.21</swagger-annotations.version>
<swagger-models.version>1.5.21</swagger-models.version>
</properties>
<dependencies>
<!-- SpringBoot的依赖配置-->
@ -29,6 +34,77 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.6</version>
</dependency>
<!--velocity模版依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--mybatis plus生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.6</version>
</dependency>
<!--Swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt</artifactId>-->
<!-- <version>${jwt.version}</version>-->
<!-- </dependency>-->
<!-- swagger ui-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j-spring-boot.version}</version>
</dependency>
<!--指定swagger-models版本解决报错-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger-annotations.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger-models.version}</version>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
@ -60,20 +136,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

@ -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();
}
}

@ -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);
/*** 宏定义 ***/

@ -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 SDK8000
* @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;
}
}

@ -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();
}
}
}

@ -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;
}
}

@ -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");
}
}

@ -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());
}
}

@ -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()
// }
//}

@ -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通道号为132路以及以下路数的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通道号为132路以及以下路数的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; //定时检测设备工作状态单位ms0表示使用默认值(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;
//
// }
//
//
//}
//
//

@ -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) {

@ -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_RESULT1- 新报警信息(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_RESULT1- 新报警信息(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_RESULT1- 新报警信息(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;
// }
//
//
//
//}

File diff suppressed because it is too large Load Diff

@ -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;
// }
//}

@ -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;
// }
//}
//
//
//
//
//
//
//

@ -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);
}
}
}

@ -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;
// }
//
//}
//

@ -0,0 +1,18 @@
package com.shxy.xyhkcamera.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
@RestController
@RequestMapping("/data-eaif-hentity")
public class DataEaifHController {
}

@ -0,0 +1,18 @@
package com.shxy.xyhkcamera.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
@RestController
@RequestMapping("/modev-eaif-entity")
public class ModevEaifController {
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -0,0 +1,16 @@
package com.shxy.xyhkcamera.mapper;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
public interface DataEaifHMapper extends BaseMapper<DataEaifHEntity> {
}

@ -0,0 +1,16 @@
package com.shxy.xyhkcamera.mapper;
import com.shxy.xyhkcamera.entity.ModevEaifEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
public interface ModevEaifMapper extends BaseMapper<ModevEaifEntity> {
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shxy.xyhkcamera.mapper.DataEaifHMapper">
</mapper>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shxy.xyhkcamera.mapper.ModevEaifMapper">
</mapper>

@ -0,0 +1,16 @@
package com.shxy.xyhkcamera.service;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
public interface DataEaifHService extends IService<DataEaifHEntity> {
}

@ -0,0 +1,16 @@
package com.shxy.xyhkcamera.service;
import com.shxy.xyhkcamera.entity.ModevEaifEntity;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
public interface ModevEaifService extends IService<ModevEaifEntity> {
}

@ -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;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
@Service
public class DataEaifHServiceImp extends ServiceImpl<DataEaifHMapper, DataEaifHEntity> implements DataEaifHService {
}

@ -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;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
@Service
public class ModevEaifServiceImp extends ServiceImpl<ModevEaifMapper, ModevEaifEntity> implements ModevEaifService {
}

@ -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();
}
}
}

@ -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<String> 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();
}
}

@ -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

@ -1 +0,0 @@
The dll in this directory£¨iconv.dll,libxml2.dll,zlib1.dll,calib.dll£©only used in ClientDemo.

@ -21,8 +21,8 @@
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}[%thread] %style{%logger{36}}{cyan} : %msg%n"/>
<!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="/var/log/xyi2logs/"/>
<property name="FILE_NAME" value="xyi2log"/>
<property name="FILE_PATH" value="/var/log/xycameralog/"/>
<property name="FILE_NAME" value="cameralog"/>
</Properties>
<appenders>
@ -45,10 +45,10 @@
<Policies>
<!--interval属性用来指定多久滚动一次默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
</Policies>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖 -->
<!-- <DefaultRolloverStrategy max="15"/>-->
<!-- <DefaultRolloverStrategy max="15"/>-->
</RollingFile>
@ -61,10 +61,10 @@
<Policies>
<!--interval属性用来指定多久滚动一次默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
</Policies>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖-->
<!-- <DefaultRolloverStrategy max="15"/>-->
<!-- <DefaultRolloverStrategy max="15"/>-->
</RollingFile>
<!-- 这个会打印出所有的error及以下级别的信息每次大小超过size则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
@ -76,10 +76,10 @@
<Policies>
<!--interval属性用来指定多久滚动一次默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
<!-- <SizeBasedTriggeringPolicy size="20MB"/>-->
</Policies>
<!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖-->
<!-- <DefaultRolloverStrategy max="15"/>-->
<!-- <DefaultRolloverStrategy max="15"/>-->
</RollingFile>
</appenders>
@ -87,14 +87,14 @@
<!--然后定义loggers只有定义了logger并引入的appenderappender才会生效-->
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<!-- <logger name="org.mybatis" level="info">-->
<!-- <AppenderRef ref="Console"/>-->
<!-- </logger>-->
<!-- &lt;!&ndash;监控系统信息&ndash;&gt;-->
<!-- &lt;!&ndash;若是additivity设为false则 子Logger 只会在自己的appender里输出而不会在 父Logger 的appender里输出。&ndash;&gt;-->
<!-- <Logger name="org.springframework" level="info">-->
<!-- <AppenderRef ref="Console"/>-->
<!-- </Logger>-->
<!-- <logger name="org.mybatis" level="info">-->
<!-- <AppenderRef ref="Console"/>-->
<!-- </logger>-->
<!-- &lt;!&ndash;监控系统信息&ndash;&gt;-->
<!-- &lt;!&ndash;若是additivity设为false则 子Logger 只会在自己的appender里输出而不会在 父Logger 的appender里输出。&ndash;&gt;-->
<!-- <Logger name="org.springframework" level="info">-->
<!-- <AppenderRef ref="Console"/>-->
<!-- </Logger>-->
<root level="info">
<appender-ref ref="Console"/>

@ -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");
}
}
}

Loading…
Cancel
Save