修复部署施 stackoverflow的bug

master
liuguijing 1 year ago
parent 302472473f
commit 9c1c903018

@ -110,11 +110,11 @@
</dependency>
<!--jna-->
<dependency>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId>
<version>3.0.9</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.sun.jna</groupId>-->
<!-- <artifactId>jna</artifactId>-->
<!-- <version>3.0.9</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.sun.jna</groupId>
@ -122,11 +122,11 @@
<version>1.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>net.java.dev.jna</groupId>-->
<!-- <artifactId>jna</artifactId>-->
<!-- <version>3.4.0</version>-->
<!-- </dependency>-->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>3.4.0</version>
</dependency>
<!-- 引入log4j2依赖 -->
<dependency>

File diff suppressed because it is too large Load Diff

@ -1,22 +1,22 @@
package com.shxy.xyhkcamera.alarm;
import com.shxy.xyhkcamera.hk.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;
}
}
//
//package com.shxy.xyhkcamera.alarm;
//
//import com.shxy.xyhkcamera.hk.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;
// }
//}
//
//
//
//
//
//
//

@ -1,99 +0,0 @@
package com.shxy.xyhkcamera.ascest;
import com.shxy.xyhkcamera.hk.HCNetSDK;
import com.sun.jna.ptr.IntByReference;
/**
*
* 1
* 2
*/
public final class ACSManage {
/**
*
*
* @param lUserID
*/
public static void acsCfg(int lUserID) {
/**获取门禁主机参数*/
HCNetSDK.NET_DVR_ACS_CFG struAcsCfg = new HCNetSDK.NET_DVR_ACS_CFG();
struAcsCfg.dwSize = struAcsCfg.size();
struAcsCfg.write();
IntByReference intByReference = new IntByReference(0);
boolean b_GetAcsCfg = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(),
struAcsCfg.size(), intByReference);
if (b_GetAcsCfg = false) {
System.out.println("获取门禁主机参数,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
return;
} else {
System.out.println("获取门禁主机参数成功");
struAcsCfg.read();
System.out.println("1.是否显示抓拍图片:" + struAcsCfg.byShowCapPic + "\n"); //是否显示抓拍图片, 0-不显示1-显示
System.out.println("2.是否显示卡号:" + struAcsCfg.byShowCardNo + "\n"); //是否显示卡号0-不显示1-显示
System.out.println("3.是否开启语音提示:" + struAcsCfg.byVoicePrompt + "\n"); //是否启用语音提示0-不启用1-启用
System.out.println("4.联动抓图是否上传:" + struAcsCfg.byUploadCapPic + "\n"); //联动抓拍是否上传图片0-不上传1-上传
}
/**设置门禁主机参数*/
struAcsCfg.byShowCardNo = 1; //开启显示卡号
struAcsCfg.byVoicePrompt = 0; //关闭语音提示
struAcsCfg.byUploadCapPic = 1; //开启联动抓图后,设备上抓拍的图片才会通过报警布防上传,否则没有不上传
struAcsCfg.byShowCapPic = 1;
struAcsCfg.write();
boolean b_SetAcsCfg = AcsMain.hCNetSDK.NET_DVR_SetDVRConfig(lUserID, HCNetSDK.NET_DVR_SET_ACS_CFG, 0xFFFFFFFF, struAcsCfg.getPointer(), struAcsCfg.size());
if (b_SetAcsCfg = false) {
System.out.println("设置门禁主机参数,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
return;
} else {
System.out.println("设置门禁主机参数成功!!!");
}
}
/**
*
*
* @param lUserID
*/
public static void getAcsStatus(int lUserID){
HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50 netDvrAcsWorkStatusV50 = new HCNetSDK.NET_DVR_ACS_WORK_STATUS_V50();
netDvrAcsWorkStatusV50.dwSize = netDvrAcsWorkStatusV50.size();
netDvrAcsWorkStatusV50.write();
IntByReference intByReference = new IntByReference(0);
boolean b_GetAcsStatus = AcsMain.hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_WORK_STATUS_V50, 0xFFFFFFFF, netDvrAcsWorkStatusV50.getPointer(),
netDvrAcsWorkStatusV50.size(), intByReference);
if (b_GetAcsStatus = false) {
System.out.println("获取门禁主机工作状态,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
return;
} else {
System.out.println("获取门禁主机工作状态成功!!!");
netDvrAcsWorkStatusV50.read();
System.out.println("1.门锁状态(或者梯控的继电器开合状态):" + netDvrAcsWorkStatusV50.byDoorLockStatus[0] + "\n"); //门锁状态0- 正常关1- 正常开2- 短路报警3- 断路报警4- 异常报警
System.out.println("2.门状态(或者梯控的楼层状态):" + netDvrAcsWorkStatusV50.byDoorStatus[0] + "\n"); //门状态或者梯控的楼层状态1- 休眠2- 常开状态对于梯控表示自由状态3- 常闭状态对于梯控表示禁用状态4- 普通状态(对于梯控,表示受控状态)
System.out.println("3.门磁状态:" + netDvrAcsWorkStatusV50.byMagneticStatus[0] + "\n"); //门磁状态0-正常关1-正常开2-短路报警3-断路报警4-异常报警
System.out.println("4.事件报警输入状态:" + netDvrAcsWorkStatusV50.byCaseStatus[0] + "\n"); //事件报警输入状态0- 无输入1- 有输入
}
}
/**
*
* @param userID
*/
public static void remoteControlGate(int userID)
{
/**lGatewayIndex
[in] ID1-1
dwStaic
[in] 0- 1- 2- 3- 4- 5- 访6- */
boolean b_gate= AcsMain.hCNetSDK.NET_DVR_ControlGateway(userID,1,1);
if (b_gate==false)
{
System.out.println("远程控门失败,err="+ AcsMain.hCNetSDK.NET_DVR_GetLastError());
return;
}
System.out.println("远程控门成功");
return;
}
}

@ -1,220 +0,0 @@
package com.shxy.xyhkcamera.ascest;
import com.shxy.xyhkcamera.hk.HCNetSDK;
import com.shxy.xyhkcamera.utils.osSelect;
import com.sun.jna.Native;
import java.io.UnsupportedEncodingException;
public class AcsMain {
static HCNetSDK hCNetSDK = null;
static int lUserID = -1;//用户句柄
static int iCharEncodeType = 0;//设备字符集
/**
*
* @return
*/
private static boolean createSDKInstance()
{
if(hCNetSDK == null)
{
synchronized (HCNetSDK.class)
{
String strDllPath = "";
try
{
//System.setProperty("jna.debug_load", "true");
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";
hCNetSDK = (HCNetSDK) Native.loadLibrary(strDllPath, HCNetSDK.class);
}catch (Exception ex) {
System.out.println("loadLibrary: " + strDllPath + " Error: " + ex.getMessage());
return false;
}
}
}
return true;
}
/**
* @param args
* @throws UnsupportedEncodingException
* @throws InterruptedException
*/
public static void main(String[] args) throws UnsupportedEncodingException, 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());
}
hCNetSDK.NET_DVR_Init();
//开启SDK日志打印
boolean i= hCNetSDK.NET_DVR_SetLogToFile(3, "./sdklog", false);
login_V40("10.16.36.13","admin","hik12345",(short) 8000); //登陆设备
/**
*
*/
// UserManage.searchUserInfo(lUserID); //查询所有人员
// UserManage.deleteUserInfo(lUserID);
// UserManage.addUserInfo(lUserID,"test20221122"); //添加人员
/**
*
*/
// FaceManage.searchFaceInfo(lUserID,"tset123");
// FaceManage.addFaceByBinary(lUserID,"test20221122");
// FaceManage.addFaceByUrl(lUserID,"test111");
// FaceManage.deleteFaceInfo(lUserID,"test111");
// FaceManage.captureFaceInfo(lUserID);
/**
*
*/
// CardManage.searchCardInfo(lUserID,"ceshi1");
// CardManage.addCardInfo(lUserID,"12345");
// CardManage.searchCardInfo(lUserID,"test111");
// CardManage.searchAllCardInfo(lUserID);
// CardManage.deleteCardInfo(lUserID,"111");
// CardManage.deleteAllCardInfo(lUserID);
// CardManage.getAllCardNumber(lUserID);
/**
*
*/
// FingerManage.fingerCapture(lUserID);
// FingerManage.fingerCpaureByisapi(lUserID);
// FingerManage.fingerCpaureByisapi(lUserID);
// FingerManage.SearchFingerInfo(lUserID,"2222");
//指纹数据的BASE64编码
// String fingerdata="";
// FingerManage.setOneFinger(lUserID,"zhangsan",fingerdata);
// FingerManage.deleteFinger(lUserID,"zhangsan");
/**
*
*/
// EventSearch.searchAllEvent(lUserID);
//多重认证
// MutilCard.setGroupCfg(lUserID);
// MutilCard.setMultiCardCfg(lUserID);
//计划模板
// UserManage.setCardTemplate(lUserID,2);
/**
* sleep
*/
Thread.sleep(20000);
/**
*
*/
AcsMain.logout();
//释放SDK程序退出前调用
hCNetSDK.NET_DVR_Cleanup();
}
/**
*
* @param ipadress IP
* @param user
* @param psw
* @param port 8000
*/
public static void login_V40(String ipadress, String user, String psw, short port) {
//注册
HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
String m_sDeviceIP = ipadress;//设备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; //sdk端口
m_strLoginInfo.bUseAsynLogin = false; //是否异步登录0- 否1- 是
m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
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("登录成功!");
m_strDeviceInfo.read();
iCharEncodeType = m_strDeviceInfo.byCharEncodeType;
return;
}
}
/**
*
*
*/
public static void logout(){
/**登出和清理释放SDK资源*/
if (lUserID>=0)
{
if (!hCNetSDK.NET_DVR_Logout(lUserID))
{
System.out.println("设备注销失败,错误码:" + hCNetSDK.NET_DVR_GetLastError());
return;
}
System.out.println("设备注销成功!!!");
}
}
}//AcsMain Class结束

@ -1,215 +0,0 @@
//package com.shxy.xyhkcamera.ascest;
//
//
//import com.shxy.xyhkcamera.hk.HCNetSDK;
//import com.sun.jna.ptr.IntByReference;
//
///**
// * 卡管理,以人为中心,要先下发工号,卡号要关联在人员工号上
// */
//public final class CardManage {
//
//
//// /**
//// * 下发卡号,
//// * @param userID 用户注册ID
//// * @param cardNo 卡号
//// */
//// public static void addCardInfo(int userID,String cardNo) {
//// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
//// String strInBuffer = "POST /ISAPI/AccessControl/CardInfo/Record?format=json";
//// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
//// ptrByteArray.write();
////
//// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
//// if (lHandler < 0)
//// {
//// System.out.println("AddCardInfo NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
//// return;
//// }
//// else{
//// System.out.println("AddCardInfo NET_DVR_StartRemoteConfig 成功!");
//// HCNetSDK.BYTE_ARRAY lpInput = new HCNetSDK.BYTE_ARRAY(1024); //数组
//// String strJsonData = "{\n" +
//// " \"CardInfo\" : {\n" +
//// " \"employeeNo\":\"ceshi1\", \n" +
//// " \"cardNo\":\""+cardNo+"\", \n" +
//// " \"cardType\":\"normalCard\"\n" +
//// " } \n" +
//// "}";
//// System.arraycopy(strJsonData.getBytes(), 0, lpInput.byValue, 0, strJsonData.length());//字符串拷贝到数组中
//// lpInput.write();
//// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(1024);
//// IntByReference pInt = new IntByReference(0);
//// while(true){
//// /*
//// 如果需要批量下发循环调用NET_DVR_SendWithRecvRemoteConfig接口进行下发不同的卡号下发结束完成后关闭下发卡号长连接
//// */
//// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, lpInput.getPointer(), lpInput.byValue.length ,ptrOutuff.getPointer(), 1024, pInt);
//// //读取返回的json并解析
//// ptrOutuff.read();
//// String strResult = new String(ptrOutuff.byValue).trim();
//// System.out.println("dwState:" + dwState + ",strResult:" + strResult);
////
//// JSONObject jsonResult = new JSONObject(strResult);
//// int statusCode = jsonResult.getInt("statusCode");
//// String statusString = jsonResult.getString("statusString");
////
//// if(dwState == -1){
//// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
//// break;
//// }
//// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
//// {
//// System.out.println("配置等待");
//// try {
//// Thread.sleep(10);
//// } catch (InterruptedException e) {
//// e.printStackTrace();
//// }
//// continue;
//// }
//// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
//// {
//// System.out.println("下发卡号失败, json retun:" + jsonResult.toString());
//// break;
//// }
//// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
//// {
//// System.out.println("下发卡号异常, json retun:" + jsonResult.toString());
//// break;
//// }
//// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
//// {
//// if (statusCode != 1){
//// System.out.println("下发卡号成功,但是有异常情况:" + jsonResult.toString());
//// }
//// else{
//// System.out.println("下发卡号成功, json retun:" + jsonResult.toString());
//// }
//// break;
//// }
//// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
////
//// System.out.println("下发卡号完成");
//// break;
//// }
//// }
//// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
//// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
//// }
//// else{
//// System.out.println("NET_DVR_StopRemoteConfig接口成功");
//// }
//// }
//// }
//
//
// /**
// * 按照人员工号查询卡号
// * @param userID
// * @param employeeNo
// */
// public static void searchCardInfo(int userID, String employeeNo)
// {
// String searchCardInfoUrl="POST /ISAPI/AccessControl/CardInfo/Search?format=json";
// String searchCardInfojson="{\n" +
// " \"CardInfoSearchCond\": {\n" +
// " \"searchID\": \"20201014001\",\n" +
// " \"searchResultPosition\": 0,\n" +
// " \"maxResults\": 30,\n" +
// " \"EmployeeNoList\" : [\n" +
// " {\n" +
// " \"employeeNo\": \""+employeeNo+"\"\n" +
// " }\n" +
// " ]\n" +
// " }\n" +
// "}";
// String result= TransIsapi.put_isapi(userID,searchCardInfoUrl,searchCardInfojson);
// System.out.println(result);
//
// }
//
// /**
// * 查询所有卡号
// * @param userID
// */
// public static void searchAllCardInfo(int userID)
// {
// String searchCardInfoUrl="POST /ISAPI/AccessControl/CardInfo/Search?format=json";
// /*
// "searchID": "", //必填,搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个,设备记录内存,
// 下次搜索加快速度),string类型
// "searchResultPosition": 0, //必填,查询结果在结果列表中的起始位置,integer32类型;当记录条数很多时,
// 一次查询不能获取所有的记录,下一次查询时指定位置可以查询后面的记录
// "maxResults": 30, //必填,本次协议调用可获取的最大记录数,integer32类型如maxResults值大于设备能力集返回的范围
// 则设备按照能力集最大值返回,设备不进行报错
// */
// String searchCardInfojson="{\n" +
// " \"CardInfoSearchCond\": {\n" +
// " \"searchID\": \"20211129001\",\n" +
// " \"searchResultPosition\": 0,\n" +
// " \"maxResults\": 30\n" +
// " }\n" +
// "}";
// String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,searchCardInfoUrl,searchCardInfojson);
// System.out.println(result);
// }
//
//
// /**
// * 根据工号删除卡号,
// * @param userID
// * @param employeeNo
// */
// public static void deleteCardInfo(int userID,String employeeNo )
// {
// String deleteCardInfoURL="PUT /ISAPI/AccessControl/CardInfo/Delete?format=json ";
// String deleteCardInfojson="{\n" +
// " \"CardInfoDelCond\" : {\n" +
// " \"EmployeeNoList\" : [ \n" +
// " {\n" +
// " \"employeeNo\": \""+employeeNo+"\" \n" +
// " }\n" +
// " ]\n" +
// " }\n" +
// "}\n";
// String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,deleteCardInfoURL,deleteCardInfojson);
// System.out.println(result);
// }
//
//
// /**
// * 删除全部卡号信息,
// * @param userID
// */
// public static void deleteAllCardInfo(int userID)
// {
// String deleteAllCardInfoURL="PUT /ISAPI/AccessControl/CardInfo/Delete?format=json";
// String deleteAllCardInfoJson="{\"CardInfoDelCond\" : {}}";
// /*
// 如果涉及大批量卡号删除设备需要一定的时间去处理需要将超时时间设置成60sput_isapi中的NET_DVR_XML_CONFIG_INPUT中dwRecvTimeOut
// 参数设置成60000
// */
// String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,deleteAllCardInfoURL,deleteAllCardInfoJson);
// System.out.println(result);
// }
////
////
//// /**
//// * 获取所有卡数量
//// * @param userID
//// * @return
//// */
//// public static int getAllCardNumber(int userID) {
//// String getAllCardNumberUrl="GET /ISAPI/AccessControl/CardInfo/Count?format=json";
//// String result= com.shxy.xyhkcamera.asc.TransIsapi.get_isapi(userID,getAllCardNumberUrl);
//// System.out.println(result);
//// JSONObject jsonObject=new JSONObject(result);
//// int num=jsonObject.optJSONObject("CardInfoCount").getInt("cardNumber");
//// return num;
//// }
//
//
//
//}

@ -1,121 +0,0 @@
package com.shxy.xyhkcamera.ascest;
import com.shxy.xyhkcamera.hk.HCNetSDK;
import com.sun.jna.Pointer;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
/**
*
*/
public final class EventSearch {
public static void searchAllEvent(int lUserID) throws UnsupportedEncodingException, InterruptedException {
int i = 0; //事件条数
HCNetSDK.NET_DVR_ACS_EVENT_COND struAcsEventCond = new HCNetSDK.NET_DVR_ACS_EVENT_COND();
struAcsEventCond.read();
struAcsEventCond.dwSize = struAcsEventCond.size();
//查询全部主次类型的报警
struAcsEventCond.dwMajor = 0; // 主次事件类型设为0代表查询所有事件
struAcsEventCond.dwMinor = 0; //
//开始时间
struAcsEventCond.struStartTime.dwYear = 2022;
struAcsEventCond.struStartTime.dwMonth = 4;
struAcsEventCond.struStartTime.dwDay = 27;
struAcsEventCond.struStartTime.dwHour = 9;
struAcsEventCond.struStartTime.dwMinute = 0;
struAcsEventCond.struStartTime.dwSecond = 0;
//结束时间
struAcsEventCond.struEndTime.dwYear = 2022;
struAcsEventCond.struEndTime.dwMonth = 4;
struAcsEventCond.struEndTime.dwDay = 30;
struAcsEventCond.struEndTime.dwHour = 16;
struAcsEventCond.struEndTime.dwMinute = 0;
struAcsEventCond.struEndTime.dwSecond = 0;
struAcsEventCond.wInductiveEventType = 1;
struAcsEventCond.byPicEnable = 1; //是否带图片0-不带图片1-带图片
struAcsEventCond.write();
Pointer ptrStruEventCond = struAcsEventCond.getPointer();
int m_lSearchEventHandle = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_GET_ACS_EVENT, ptrStruEventCond, struAcsEventCond.size(), null, null);
if (m_lSearchEventHandle<=-1)
{
System.out.println("NET_DVR_StartRemoteConfig调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
}
HCNetSDK.NET_DVR_ACS_EVENT_CFG struAcsEventCfg = new HCNetSDK.NET_DVR_ACS_EVENT_CFG();
struAcsEventCfg.read();
struAcsEventCfg.dwSize = struAcsEventCfg.size();
struAcsEventCfg.write();
Pointer ptrStruEventCfg = struAcsEventCfg.getPointer();
while (true) {
System.out.println("i=" + i);
int dwEventSearch = AcsMain.hCNetSDK.NET_DVR_GetNextRemoteConfig(m_lSearchEventHandle, ptrStruEventCfg, struAcsEventCfg.size());
if (dwEventSearch <= -1) {
System.out.println("NET_DVR_GetNextRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
}
if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_NEED_WAIT) {
System.out.println("配置等待....");
Thread.sleep(10);
continue;
} else if (dwEventSearch == HCNetSDK.NET_SDK_NEXT_STATUS__FINISH) {
System.out.println("获取事件完成");
break;
} else if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED) {
System.out.println("获取事件出现异常");
break;
} else if (dwEventSearch == HCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS) {
struAcsEventCfg.read();
//获取的事件信息通过struAcsEventCfg结构体进行解析
System.out.println(i + "获取事件成功, 报警主类型:" + Integer.toHexString(struAcsEventCfg.dwMajor) + "报警次类型:" + Integer.toHexString(struAcsEventCfg.dwMinor) + "卡号:" + new String(struAcsEventCfg.struAcsEventInfo.byCardNo).trim());
/**
* dwEmployeeNo0byEmployeeNo
*/
System.out.println("工号1"+struAcsEventCfg.struAcsEventInfo.dwEmployeeNo);
System.out.println("工号2"+new String(struAcsEventCfg.struAcsEventInfo.byEmployeeNo));
//人脸温度数据,需要设备和支持测温功能
System.out.println("人脸温度:" + struAcsEventCfg.struAcsEventInfo.fCurrTemperature + "是否异常:" + struAcsEventCfg.struAcsEventInfo.byIsAbnomalTemperature);
//口罩功能,需要设备支持此功能 0-保留1-未知2-不戴口罩3-戴口罩
System.out.println("是否带口罩:"+struAcsEventCfg.struAcsEventInfo.byMask);
//人脸图片保存
if (struAcsEventCfg.dwPicDataLen>0 || struAcsEventCfg.pPicData != null )
{
FileOutputStream fout;
try {
/**
*
*/
String filename = "..\\pic\\"+i+"_event.jpg";
fout = new FileOutputStream(filename);
//将字节写入文件
long offset = 0;
ByteBuffer buffers = struAcsEventCfg.pPicData.getByteBuffer(offset, struAcsEventCfg.dwPicDataLen);
byte[] bytes = new byte[struAcsEventCfg.dwPicDataLen];
buffers.rewind();
buffers.get(bytes);
fout.write(bytes);
fout.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
i++;
continue;
}
}
i = 0;
if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(m_lSearchEventHandle)) {
System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
} else {
System.out.println("NET_DVR_StopRemoteConfig接口成功");
}
return;
}
}

@ -1,490 +0,0 @@
//package com.shxy.xyhkcamera.ascest;
//
//
//import com.shxy.xyhkcamera.hk.HCNetSDK;
//import com.sun.jna.Pointer;
//import com.sun.jna.ptr.IntByReference;
//
//import java.io.*;
//import java.nio.ByteBuffer;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
///**
// * 功能模块:人员管理,下发、查询、删除人脸图片,注:下发人脸图片前,先下发人员工号。
// */
//public final class FaceManage {
//
//
// /**
// * 功能:按照二进制方式下发人脸图片
// * @param userID 用户注册ID
// * @param employeeNo 人员工号
// * @throws InterruptedException
// */
// public static void addFaceByBinary(int userID,String employeeNo ) throws JSONException, InterruptedException{
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_FACE_DATA_RECORD, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0)
// {
// System.out.println("Addface NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// else{
// System.out.println("Addface NET_DVR_StartRemoteConfig 成功!");
//
// HCNetSDK.NET_DVR_JSON_DATA_CFG struAddFaceDataCfg = new HCNetSDK.NET_DVR_JSON_DATA_CFG();
// struAddFaceDataCfg.read();
//
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("faceLibType", "blackFD");
// jsonObject.put("FDID", "1");
// jsonObject.put("FPID", employeeNo);//人脸下发关联的工号
//
// String strJsonData = jsonObject.toString();
// System.arraycopy(strJsonData.getBytes(), 0, ptrByteArray.byValue, 0, strJsonData.length());//字符串拷贝到数组中
// ptrByteArray.write();
// struAddFaceDataCfg.dwSize = struAddFaceDataCfg.size();
// struAddFaceDataCfg.lpJsonData = ptrByteArray.getPointer();
// struAddFaceDataCfg.dwJsonDataSize = strJsonData.length();
//
// /*****************************************
// * 从本地文件里面读取JPEG图片二进制数据
// *****************************************/
// FileInputStream picfile = null;
// int picdataLength = 0;
// try{
//
// picfile = new FileInputStream(new File(".//pic//FDLib.jpg"));
// }
// catch(FileNotFoundException e)
// {
// e.printStackTrace();
// }
//
// try{
// picdataLength = picfile.available();
// }
// catch(IOException e1)
// {
// e1.printStackTrace();
// }
// if(picdataLength < 0)
// {
// System.out.println("input file dataSize < 0");
// return;
// }
//
// HCNetSDK.BYTE_ARRAY ptrpicByte = new HCNetSDK.BYTE_ARRAY(picdataLength);
// try {
// picfile.read(ptrpicByte.byValue);
// } catch (IOException e2) {
// e2.printStackTrace();
// }
// ptrpicByte.write();
// struAddFaceDataCfg.dwPicDataSize = picdataLength;
// struAddFaceDataCfg.lpPicData = ptrpicByte.getPointer();
// struAddFaceDataCfg.write();
//
// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(1024);
//
// IntByReference pInt = new IntByReference(0);
//
// while(true){
// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, struAddFaceDataCfg.getPointer(), struAddFaceDataCfg.dwSize ,ptrOutuff.getPointer(), 1024, pInt);
// if(dwState == -1){
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// //读取返回的json并解析
// ptrOutuff.read();
// String strResult = new String(ptrOutuff.byValue).trim();
// System.out.println("dwState:" + dwState + ",strResult:" + strResult);
//
// JSONObject jsonResult = new JSONObject(strResult);
// int statusCode = jsonResult.getInt("statusCode");
// String statusString = jsonResult.getString("statusString");
// if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
// {
// System.out.println("配置等待");
// Thread.sleep(10);
// continue;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
// {
// System.out.println("下发人脸失败, json retun:" + jsonResult.toString());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
// {
// System.out.println("下发人脸异常, json retun:" + jsonResult.toString());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
// {//返回NET_SDK_CONFIG_STATUS_SUCCESS代表流程走通了但并不代表下发成功比如人脸图片不符合设备规范等原因所以需要解析Json报文
// if (statusCode != 1){
// System.out.println("下发人脸成功,但是有异常情况:" + jsonResult.toString());
// }
// else{
// System.out.println("下发人脸成功, json retun:" + jsonResult.toString());
// }
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// //下发人脸时dwState其实不会走到这里因为设备不知道我们会下发多少个人所以长连接需要我们主动关闭
// System.out.println("下发人脸完成");
// break;
// }
// }
// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// }
// else{
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// }
// }
//
// }
//
//
// /**
// * 按URL方式下发人脸图片
// * @param userID 用户注销ID
// * @param employeeNo 人员工号
// * @throws JSONException
// */
// public static void addFaceByUrl(int userID,String employeeNo) throws JSONException {
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_FACE_DATA_RECORD, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0)
// {
// System.out.println("Addface NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// else{
// System.out.println("Addface NET_DVR_StartRemoteConfig 成功!");
//
// HCNetSDK.NET_DVR_JSON_DATA_CFG struAddFaceDataCfg = new HCNetSDK.NET_DVR_JSON_DATA_CFG();
// struAddFaceDataCfg.read();
//
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("faceURL","http://10.17.34.106:6011/pic?7DD9D70207A9D7F576F99AC197B2D6CAface.jpg"); //人脸图片URL
// jsonObject.put("faceLibType", "blackFD");
// jsonObject.put("FDID", "1");
// jsonObject.put("FPID", employeeNo);//人脸下发关联的工号
//
// String strJsonData = jsonObject.toString();
// System.arraycopy(strJsonData.getBytes(), 0, ptrByteArray.byValue, 0, strJsonData.length());//字符串拷贝到数组中
// ptrByteArray.write();
// struAddFaceDataCfg.dwSize = struAddFaceDataCfg.size();
// struAddFaceDataCfg.lpJsonData = ptrByteArray.getPointer();
// struAddFaceDataCfg.dwJsonDataSize = strJsonData.length();
// struAddFaceDataCfg.lpPicData = null;
// struAddFaceDataCfg.dwPicDataSize=0;
// struAddFaceDataCfg.write();
// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(1024);
//
// IntByReference pInt = new IntByReference(0);
//
// while(true){
// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, struAddFaceDataCfg.getPointer(), struAddFaceDataCfg.dwSize ,ptrOutuff.getPointer(), 1024, pInt);
//
// if(dwState == -1){
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// //读取返回的json并解析
// ptrOutuff.read();
// String strResult = new String(ptrOutuff.byValue).trim();
// System.out.println("dwState:" + dwState + ",strResult:" + strResult);
//
// JSONObject jsonResult = new JSONObject(strResult);
// int statusCode = jsonResult.getInt("statusCode");
// String statusString = jsonResult.getString("statusString");
// if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
// {
// System.out.println("配置等待");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// continue;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
// {
// System.out.println("下发人脸失败, json retun:" + jsonResult.toString());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
// {
// System.out.println("下发人脸异常, json retun:" + jsonResult.toString());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
// {//返回NET_SDK_CONFIG_STATUS_SUCCESS代表流程走通了但并不代表下发成功比如人脸图片不符合设备规范等原因所以需要解析Json报文
// if (statusCode != 1){
// System.out.println("下发人脸成功,但是有异常情况:" + jsonResult.toString());
// }
// else{
// System.out.println("下发人脸成功, json retun:" + jsonResult.toString());
// }
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// //下发人脸时dwState其实不会走到这里因为设备不知道我们会下发多少个人所以长连接需要我们主动关闭
// System.out.println("下发人脸完成");
// break;
// }
// }
// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// }
// else{
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// }
// }
// }
//
//
// /**
// * 查询人脸
// * @param userID
// * @param employeeNo
// * @throws JSONException
// */
// public static void searchFaceInfo(int userID,String employeeNo) throws JSONException{
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "POST /ISAPI/Intelligent/FDLib/FDSearch?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_FACE_DATA_SEARCH, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0)
// {
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// else{
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig成功!");
//
// JSONObject jsonObject = new JSONObject();
// jsonObject.put("searchResultPosition", 0);
// jsonObject.put("maxResults", 1);
// jsonObject.put("faceLibType", "blackFD");
// jsonObject.put("FDID","1");
// jsonObject.put("FPID", employeeNo);//人脸关联的工号同下发人员时的employeeNo字段
//
// String strInbuff = jsonObject.toString();
// System.out.println("查询的json报文:" + strInbuff);
//
// //把string传递到Byte数组中后续用.getPointer()方法传入指针地址中。
// HCNetSDK.BYTE_ARRAY ptrInbuff = new HCNetSDK.BYTE_ARRAY(strInbuff.length());
// System.arraycopy(strInbuff.getBytes(), 0, ptrInbuff.byValue, 0, strInbuff.length());
// ptrInbuff.write();
//
// HCNetSDK.NET_DVR_JSON_DATA_CFG m_struJsonData = new HCNetSDK.NET_DVR_JSON_DATA_CFG();
// m_struJsonData.write();
//
// IntByReference pInt = new IntByReference(0);
//
// while(true){
// int dwState =AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrInbuff.getPointer(), strInbuff.length(), m_struJsonData.getPointer(), m_struJsonData.size(), pInt);
// m_struJsonData.read();
// System.out.println(dwState);
// if(dwState == -1){
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
// {
// System.out.println("配置等待");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
// {
// System.out.println("查询人脸失败");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
// {
// System.out.println("查询人脸异常");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
// {
// System.out.println("查询人脸成功");
//
// //解析JSON字符串
// HCNetSDK.BYTE_ARRAY pJsonData = new HCNetSDK.BYTE_ARRAY(m_struJsonData.dwJsonDataSize);
// pJsonData.write();
// Pointer pPlateInfo = pJsonData.getPointer();
// pPlateInfo.write(0, m_struJsonData.lpJsonData.getByteArray(0, pJsonData.size()), 0, pJsonData.size());
// pJsonData.read();
// String strResult = new String(pJsonData.byValue).trim();
// System.out.println("strResult:" + strResult);
// JSONObject jsonResult = new JSONObject(strResult);
//
// int numOfMatches = jsonResult.getInt("numOfMatches");
// if(numOfMatches != 0){//确认有人脸
// JSONArray MatchList = jsonResult.getJSONArray("MatchList");
// JSONObject MatchList_1 = MatchList.optJSONObject(0);
// String FPID = MatchList_1.getString("FPID"); //获取json中人脸关联的工号
//
// FileOutputStream fout;
// try {
// fout = new FileOutputStream("..//AddFacePicture//["+ FPID +"]_FacePic.jpg");
// //将字节写入文件
// long offset = 0;
// ByteBuffer buffers = m_struJsonData.lpPicData.getByteBuffer(offset, m_struJsonData.dwPicDataSize);
// byte [] bytes = new byte[m_struJsonData.dwPicDataSize];
// buffers.rewind();
// buffers.get(bytes);
// fout.write(bytes);
// fout.close();
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// System.out.println("获取人脸完成");
// break;
// }
// }
// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// }
// else{
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// lHandler = -1;
// }
//
// }
//
// }
//
// /**
// * 人脸删除支持批量删除json中添加多个工号
// * @param userID
// * @param employeeNo
// */
//
// public static void deleteFaceInfo(int userID,String employeeNo)
// {
// String deleteFaceUrl="PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=1&faceLibType=blackFD";
// String deleteFaceJson="{\n" +
// " \"FPID\": [{\n" +
// " \"value\": \""+employeeNo+"\"\n" +
// " }]\n" +
// "}";
// String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,deleteFaceUrl,deleteFaceJson);
// System.out.println("删除人员结果:"+result);
// }
//
// /**
// * 人脸采集,下发人脸采集命令,从设备中采集人脸图片保存到本地
// * @param userID 用户注册ID
// */
// public static void captureFaceInfo(int userID)
// {
// HCNetSDK.NET_DVR_CAPTURE_FACE_COND struCapCond = new HCNetSDK.NET_DVR_CAPTURE_FACE_COND();
// struCapCond.read();
// struCapCond.dwSize = struCapCond.size();
// struCapCond.write();
// int lCaptureFaceHandle = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_CAPTURE_FACE_INFO, struCapCond.getPointer(), struCapCond.size(), null, null);
// if (lCaptureFaceHandle == -1) {
// System.out.println("建立采集人脸长连接失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// } else {
// System.out.println("建立采集人脸长连接成功!");
// }
// //采集的人脸信息
// HCNetSDK.NET_DVR_CAPTURE_FACE_CFG struFaceInfo = new HCNetSDK.NET_DVR_CAPTURE_FACE_CFG();
// struFaceInfo.read();
// while (true) {
// int dwState = AcsMain.hCNetSDK.NET_DVR_GetNextRemoteConfig(lCaptureFaceHandle, struFaceInfo.getPointer(), struFaceInfo.size());
// struFaceInfo.read();
// if (dwState == -1) {
// System.out.println("NET_DVR_GetNextRemoteConfig采集人脸失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) {
// System.out.println("正在采集中,请等待...");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) {
// System.out.println("采集人脸失败");
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) {
// //超时时间5秒内设备本地人脸采集失败就会返回失败,连接会断开
// System.out.println("采集人脸异常, 网络异常导致连接断开 ");
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) {
// if ((struFaceInfo.dwFacePicSize > 0) && (struFaceInfo.pFacePicBuffer != null)) {
// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
// String newName = sf.format(new Date());
// FileOutputStream fout;
// try {
// String filename = "..\\pic\\" + newName + "_capFaceInfo.jpg";
// fout = new FileOutputStream(filename);
// //将字节写入文件
// long offset = 0;
// ByteBuffer buffers = struFaceInfo.pFacePicBuffer.getByteBuffer(offset, struFaceInfo.dwFacePicSize);
// byte[] bytes = new byte[struFaceInfo.dwFacePicSize];
// buffers.rewind();
// buffers.get(bytes);
// fout.write(bytes);
// fout.close();
// System.out.println("采集人脸成功, 图片保存路径: " + filename);
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// break;
// } else {
// System.out.println("其他异常, dwState: " + dwState);
// break;
// }
// }
// //采集成功之后断开连接、释放资源
// if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lCaptureFaceHandle)) {
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// } else {
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// }
// }
//
//
//
//
//
//
//}

@ -1,378 +0,0 @@
//package com.shxy.xyhkcamera.ascest;
//
//
//import com.shxy.xyhkcamera.hk.HCNetSDK;
//import com.sun.jna.Pointer;
//import com.sun.jna.ptr.IntByReference;
//
//import java.io.*;
//import java.nio.ByteBuffer;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
///**
// * 指纹管理:指纹采集,指纹下发,指纹信息查询,指纹删除
// */
//public final class FingerManage {
// /**
// * 采集指纹模块,采集指纹数据为二进制
// * @param userID
// */
// public static void fingerCapture(int userID)
// {
//
// HCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_COND strFingerCond = new HCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_COND();
// strFingerCond.read();
// strFingerCond.dwSize = strFingerCond.size();
// strFingerCond.byFingerPrintPicType = 1; //指纹读卡器
// strFingerCond.byFingerNo = 1; //指纹编号
// strFingerCond.write();
// int lGetFingerHandle = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_INFO, strFingerCond.getPointer(), strFingerCond.dwSize, null, null);
// if (lGetFingerHandle == -1) {
// System.out.println("建立采集指纹长连接失败,错误码为:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// } else {
// System.out.println("建立采集指纹长连接成功!");
// }
// HCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG strFingerCfg = new HCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG();
// strFingerCfg.dwSize=strFingerCfg.size();
// strFingerCfg.write();
// while (true) {
// int dwFingerState = AcsMain.hCNetSDK.NET_DVR_GetNextRemoteConfig(lGetFingerHandle, strFingerCfg.getPointer(), strFingerCfg.size());
//
// if (dwFingerState == -1) {
// System.out.println("NET_DVR_GetNextRemoteConfig采集指纹失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// } else if (dwFingerState == HCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED) {
// System.out.println("采集指纹失败");
// break;
// } else if (dwFingerState == HCNetSDK.NET_SDK_GET_NEXT_STATUS_NEED_WAIT) {
// System.out.println("正在采集指纹中,请等待...");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// } else if (dwFingerState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) {
// //超时时间5秒内设备本地人脸采集失败就会返回失败,连接会断开
// System.out.println("采集指纹异常, 网络异常导致连接断开 ");
// break;
// } else if (dwFingerState == HCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS) {
// strFingerCfg.read();
// SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
// String newName = sf.format(new Date());
// String fileName = newName + "_capFinger.data";
// String filePath = "..\\pic\\" + fileName;
// BufferedOutputStream bos = null;
// FileOutputStream fos = null;
// File file = null;
// try {
// File dir = new File(filePath);
// if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在
// dir.mkdirs();
// }
// file = new File(filePath);
// fos = new FileOutputStream(file);
// bos = new BufferedOutputStream(fos);
// bos.write(strFingerCfg.byFingerData);
// System.out.println("采集指纹成功!");
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// if (bos != null) {
// try {
// bos.close();
// } catch (IOException e1) {
// e1.printStackTrace();
// }
// }
// if (fos != null) {
// try {
// fos.close();
// } catch (IOException e1) {
// e1.printStackTrace();
// }
// }
// }
// if ((strFingerCfg.dwFingerPrintPicSize > 0) && (strFingerCfg.pFingerPrintPicBuffer != null)) {
// FileOutputStream fout;
// try {
// String filename = "..\\pic\\" + newName + "_FingerPrintPic.jpg";
// fout = new FileOutputStream(filename);
// //将字节写入文件
// long offset = 0;
// ByteBuffer buffers = strFingerCfg.pFingerPrintPicBuffer.getByteBuffer(offset, strFingerCfg.dwFingerPrintPicSize);
// byte[] bytes = new byte[strFingerCfg.dwFingerPrintPicSize];
// buffers.rewind();
// buffers.get(bytes);
// fout.write(bytes);
// fout.close();
// System.out.println("采集指纹成功, 图片保存路径: " + filename);
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// break;
// } else {
// System.out.println("其他异常, dwState: " + dwFingerState);
// break;
// }
// }
// //采集成功之后断开连接、释放资源
// if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lGetFingerHandle)) {
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// } else {
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// }
// }
//
// /**
// * 采用透传ISAPI协议方式采集指纹获取的指纹信息为BASE64编码
// */
// public static void fingerCpaureByisapi(int userID)
// {
// //采集指纹URL
// String fingerCapUrl="POST /ISAPI/AccessControl/CaptureFingerPrint";
// String XmlInput="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
// "<CaptureFingerPrintCond xmlns=\"http://www.isapi.org/ver20/XMLSchema\" version=\"2.0\">\n" +
// " <fingerNo>1</fingerNo>\n" +
// "</CaptureFingerPrintCond>";
// String result= com.shxy.xyhkcamera.asc.TransIsapi.put_isapi(userID,fingerCapUrl,XmlInput);
// System.out.println("采集指纹结果:"+result);
// }
//
//
//
// public static void setOneFinger(int userID, String employeeNo,String figerdata) throws JSONException {
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0)
// {
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// else{
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig成功!");
//
// JSONObject jsonObject = new JSONObject();
// JSONObject j_FingerPrintCond=new JSONObject();
// j_FingerPrintCond.put("employeeNo", employeeNo);
// int[] CardReader = {1};
// j_FingerPrintCond.put("enableCardReader",CardReader); //人员工号
// j_FingerPrintCond.put("fingerPrintID", 1);
// j_FingerPrintCond.put("fingerType", "normalFP");
// j_FingerPrintCond.put("fingerData",figerdata);
// jsonObject.put("FingerPrintCfg",j_FingerPrintCond);
//
// String strInbuff = jsonObject.toString();
// System.out.println("查询的json报文:" + strInbuff);
//
// //把string传递到Byte数组中后续用.getPointer()方法传入指针地址中。
// HCNetSDK.BYTE_ARRAY ptrInbuff = new HCNetSDK.BYTE_ARRAY(strInbuff.length());
// System.arraycopy(strInbuff.getBytes(), 0, ptrInbuff.byValue, 0, strInbuff.length());
// ptrInbuff.write();
//
// HCNetSDK.NET_DVR_STRING_POINTER ptrOutbuff = new HCNetSDK.NET_DVR_STRING_POINTER(3*1024);
// ptrOutbuff.write();
//
// IntByReference pInt = new IntByReference(0);
//
// while(true){
// int dwState =AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrInbuff.getPointer(), strInbuff.length(), ptrOutbuff.getPointer(), ptrOutbuff.size(), pInt);
// ptrOutbuff.read();
// System.out.println(dwState);
// if(dwState == -1){
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
// {
// System.out.println("配置等待");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
// {
// System.out.println("下发指纹失败");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
// {
// System.out.println("下发指纹异常");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
// {
// System.out.println("下发指纹成功");
// //解析JSON字符串
// ptrOutbuff.read();
// System.out.println("返回的报文:"+new String(ptrOutbuff.byString));
//
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// System.out.println("下发指纹完成");
// break;
// }
// }
// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// }
// else{
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// lHandler = -1;
// }
// }
// }
//
// public static void SearchFingerInfo(int userID,String employeeNo) throws JSONException {
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "POST /ISAPI/AccessControl/FingerPrintUpload?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0)
// {
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig 失败,错误码为"+AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// else{
// System.out.println("SearchFaceInfo NET_DVR_StartRemoteConfig成功!");
//
// JSONObject jsonObject = new JSONObject();
// JSONObject j_FingerPrintCond=new JSONObject();
// j_FingerPrintCond.put("searchID", "20211223");
// j_FingerPrintCond.put("employeeNo", employeeNo); //人员工号
// j_FingerPrintCond.put("cardReaderNo", 1);
// j_FingerPrintCond.put("fingerPrintID", 1);
// jsonObject.put("FingerPrintCond",j_FingerPrintCond);
//
// String strInbuff = jsonObject.toString();
// System.out.println("查询的json报文:" + strInbuff);
//
// //把string传递到Byte数组中后续用.getPointer()方法传入指针地址中。
// HCNetSDK.BYTE_ARRAY ptrInbuff = new HCNetSDK.BYTE_ARRAY(strInbuff.length());
// System.arraycopy(strInbuff.getBytes(), 0, ptrInbuff.byValue, 0, strInbuff.length());
// ptrInbuff.write();
//
// HCNetSDK.NET_DVR_STRING_POINTER ptrOutbuff = new HCNetSDK.NET_DVR_STRING_POINTER(3*1024);
// ptrOutbuff.write();
//
// IntByReference pInt = new IntByReference(0);
//
// while(true){
// int dwState =AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrInbuff.getPointer(), strInbuff.length(), ptrOutbuff.getPointer(), ptrOutbuff.size(), pInt);
// ptrOutbuff.read();
// System.out.println(dwState);
// if(dwState == -1){
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT)
// {
// System.out.println("配置等待");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED)
// {
// System.out.println("查询指纹失败");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION)
// {
// System.out.println("查询指纹异常");
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS)
// {
// System.out.println("查询指纹成功");
// //解析JSON字符串
// ptrOutbuff.read();
// System.out.println("查询的报文:"+new String(ptrOutbuff.byString));
//
// break;
// }
// else if(dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// System.out.println("获取指纹完成");
// break;
// }
// }
// if(!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)){
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// }
// else{
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// lHandler = -1;
// }
//
// }
// }
//
// /**
// * 按工号和读卡器删除指纹,按工号是逐个删除,按读卡器是批量删除指定读卡器上所有的指纹数据
// * @param userID
// * @param employeeNo
// */
// public static void deleteFinger(int userID,String employeeNo )
// {
// int iErr = 0;
// HCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50 m_struFingerDelInfoParam = new HCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50();
// m_struFingerDelInfoParam.dwSize = m_struFingerDelInfoParam.size();
// m_struFingerDelInfoParam.byMode = 0;// 删除方式0-按卡号人员ID方式删除1-按读卡器删除
// m_struFingerDelInfoParam.struProcessMode.setType(HCNetSDK.NET_DVR_FINGER_PRINT_BYCARD_V50.class);
// for (int i = 0; i < employeeNo.length(); i++) {
// m_struFingerDelInfoParam.struProcessMode.struByCard.byEmployeeNo[i] = employeeNo.getBytes()[i];
// }
// m_struFingerDelInfoParam.struProcessMode.struByCard.byEnableCardReader[0] = 1;//指纹的读卡器信息,按位表示
// m_struFingerDelInfoParam.struProcessMode.struByCard.byFingerPrintID[0] = 1;//需要删除的指纹编号按数组下标值表示0-不删除1-删除该指纹 ,指纹编号1删除
//
//
// Pointer lpInBuffer1 = m_struFingerDelInfoParam.getPointer();
// m_struFingerDelInfoParam.write();
//
//
// int lHandle = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_DEL_FINGERPRINT, lpInBuffer1, m_struFingerDelInfoParam.size(), null, null);
// if (lHandle < 0) {
// iErr = AcsMain.hCNetSDK.NET_DVR_GetLastError();
// System.out.println("NET_DVR_DEL_FINGERPRINT_CFG_V50 建立长连接失败,错误号:" + iErr);
// return;
// }
// while (true) {
// HCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50 v50 = new HCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50();
// v50.dwSize = v50.size();
// v50.write();
// int res = AcsMain.hCNetSDK.NET_DVR_GetNextRemoteConfig(lHandle, v50.getPointer(), v50.size());
// if (res == 1002) {
// AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandle);
// System.out.println("删除指纹成功!!!");
// break;
// } else if (res == 1003) {
// System.out.println("接口失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandle);
// break;
// }
// }
// }
//}

@ -1,77 +0,0 @@
package com.shxy.xyhkcamera.ascest;
import com.shxy.xyhkcamera.ascest.AcsMain;
import com.shxy.xyhkcamera.hk.HCNetSDK;
/**
* jsonbelongGroup
*/
public class MutilCard {
//设置群组参数
public static void setGroupCfg(int lUserID)
{
HCNetSDK.NET_DVR_GROUP_CFG struGroupCfg = new HCNetSDK.NET_DVR_GROUP_CFG();
struGroupCfg.read();
struGroupCfg.dwSize = struGroupCfg.size();
struGroupCfg.byEnable = 1;
struGroupCfg.byGroupName = "test".getBytes(); //
struGroupCfg.struValidPeriodCfg.byEnable = 1;
struGroupCfg.struValidPeriodCfg.struBeginTime.wYear = 2021;
struGroupCfg.struValidPeriodCfg.struBeginTime.byMonth = 1;
struGroupCfg.struValidPeriodCfg.struBeginTime.byDay = 1;
struGroupCfg.struValidPeriodCfg.struBeginTime.byHour = 0;
struGroupCfg.struValidPeriodCfg.struBeginTime.byMinute = 0;
struGroupCfg.struValidPeriodCfg.struBeginTime.bySecond = 0;
struGroupCfg.struValidPeriodCfg.struEndTime.wYear = 2037;
struGroupCfg.struValidPeriodCfg.struEndTime.byMonth = 12;
struGroupCfg.struValidPeriodCfg.struEndTime.byDay = 31;
struGroupCfg.struValidPeriodCfg.struEndTime.byHour = 23;
struGroupCfg.struValidPeriodCfg.struEndTime.byMinute = 59;
struGroupCfg.struValidPeriodCfg.struEndTime.bySecond = 59;
struGroupCfg.write();
if(!AcsMain.hCNetSDK.NET_DVR_SetDVRConfig(lUserID,2113,1,struGroupCfg.getPointer(),struGroupCfg.size()))
{
System.out.println("NET_DVR_SetDVRConfig NET_DVR_SET_GROUP_CFG失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
} else {
System.out.println("NET_DVR_SetDVRConfig NET_DVR_SET_GROUP_CFG成功");
}
}
//设置多重认证参数
/**
*
* nbyMemberNumnbySequenceNo1
* nAmBAB22byMemberNumnm
* bySequenceNo12bySequenceNo00
* @param lUserID
*/
public static void setMultiCardCfg(int lUserID)
{
HCNetSDK.NET_DVR_MULTI_CARD_CFG_V50 struMultiCardCfg = new HCNetSDK.NET_DVR_MULTI_CARD_CFG_V50();
struMultiCardCfg.read();
struMultiCardCfg.dwSize = struMultiCardCfg.size();
struMultiCardCfg.byEnable = 1;
struMultiCardCfg.bySwipeIntervalTimeout = 30; //刷卡认证超时时间
struMultiCardCfg.struGroupCfg[0].byEnable = 1;
struMultiCardCfg.struGroupCfg[0].dwTemplateNo = 1;
struMultiCardCfg.struGroupCfg[0].struGroupCombination[0].byEnable = 1;
struMultiCardCfg.struGroupCfg[0].struGroupCombination[0].byMemberNum = 2; //刷卡成员数量,群组里面需要刷卡的卡个数
struMultiCardCfg.struGroupCfg[0].struGroupCombination[0].bySequenceNo = 1; //群组刷卡次序号
struMultiCardCfg.struGroupCfg[0].struGroupCombination[0].dwGroupNo = 1; //群组编号 //刷卡认证组
struMultiCardCfg.write();
if(!AcsMain.hCNetSDK.NET_DVR_SetDVRConfig(lUserID, HCNetSDK.NET_DVR_SET_MULTI_CARD_CFG_V50,1,struMultiCardCfg.getPointer(),struMultiCardCfg.size()))
{
System.out.println("NET_DVR_SetDVRConfig NET_DVR_SET_MULTI_CARD_CFG_V50 失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
} else {
System.out.println("NET_DVR_SetDVRConfig NET_DVR_SET_MULTI_CARD_CFG_V50 成功");
}
}
}

@ -1,101 +0,0 @@
package com.shxy.xyhkcamera.ascest;
import com.shxy.xyhkcamera.ascest.AcsMain;
import com.shxy.xyhkcamera.hk.HCNetSDK;
/**
* @create 2021-04-13-15:23
* ISAPI
*/
public final class TransIsapi {
public static String get_isapi(int lUserID, String url) {
HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
struXMLInput.read();
HCNetSDK.BYTE_ARRAY stringRequest = new HCNetSDK.BYTE_ARRAY(1024);
stringRequest.read();
//输入ISAPI协议命令
System.arraycopy(url.getBytes(), 0, stringRequest.byValue, 0, url.length());
stringRequest.write();
struXMLInput.dwSize = struXMLInput.size();
struXMLInput.lpRequestUrl = stringRequest.getPointer();
struXMLInput.dwRequestUrlLen = url.length();
struXMLInput.lpInBuffer = null;
struXMLInput.dwInBufferSize = 0;
struXMLInput.write();
HCNetSDK.BYTE_ARRAY stringXMLOut = new HCNetSDK.BYTE_ARRAY(8 * 1024);
stringXMLOut.read();
HCNetSDK.BYTE_ARRAY struXMLStatus = new HCNetSDK.BYTE_ARRAY(1024);
struXMLStatus.read();
HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
struXMLOutput.read();
struXMLOutput.dwSize = struXMLOutput.size();
struXMLOutput.lpOutBuffer = stringXMLOut.getPointer();
struXMLOutput.dwOutBufferSize = stringXMLOut.size();
struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer();
struXMLOutput.dwStatusSize = struXMLStatus.size();
struXMLOutput.write();
if (!AcsMain.hCNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput)) {
int iErr = AcsMain.hCNetSDK.NET_DVR_GetLastError();
System.err.println("NET_DVR_STDXMLConfig失败错误号" + iErr+"----URL:"+url);
return null;
} else {
stringXMLOut.read();
System.out.println("输出文本大小:" + struXMLOutput.dwReturnedXMLSize);
//打印输出XML文本
String strOutXML = new String(stringXMLOut.byValue).trim();
System.out.println(strOutXML);
struXMLStatus.read();
String strStatus = new String(struXMLStatus.byValue).trim();
System.out.println(strStatus);
return strOutXML;
}
}
public static String put_isapi(int lUserID, String url, String inputXml) {
HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
struXMLInput.read();
HCNetSDK.BYTE_ARRAY stringRequest = new HCNetSDK.BYTE_ARRAY(1024);
stringRequest.read();
//输入ISAPI协议命令
System.arraycopy(url.getBytes(), 0, stringRequest.byValue, 0, url.length());
stringRequest.write();
struXMLInput.dwSize = struXMLInput.size();
struXMLInput.lpRequestUrl = stringRequest.getPointer();
struXMLInput.dwRequestUrlLen = url.length();
HCNetSDK.BYTE_ARRAY ptrInBuffer = new HCNetSDK.BYTE_ARRAY(inputXml.length());
ptrInBuffer.read();
System.arraycopy(inputXml.getBytes(), 0, ptrInBuffer.byValue, 0, inputXml.length());
ptrInBuffer.write();
struXMLInput.lpInBuffer = ptrInBuffer.getPointer();
struXMLInput.dwInBufferSize = inputXml.length();
struXMLInput.write();
HCNetSDK.BYTE_ARRAY stringXMLOut = new HCNetSDK.BYTE_ARRAY(8 * 1024);
stringXMLOut.read();
HCNetSDK.BYTE_ARRAY struXMLStatus = new HCNetSDK.BYTE_ARRAY(1024);
struXMLStatus.read();
HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
struXMLOutput.read();
struXMLOutput.dwSize = struXMLOutput.size();
struXMLOutput.lpOutBuffer = stringXMLOut.getPointer();
struXMLOutput.dwOutBufferSize = stringXMLOut.size();
struXMLOutput.lpStatusBuffer = struXMLStatus.getPointer();
struXMLOutput.dwStatusSize = struXMLStatus.size();
struXMLOutput.write();
if (!AcsMain.hCNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput)){
int iErr = AcsMain.hCNetSDK.NET_DVR_GetLastError();
System.err.println("NET_DVR_STDXMLConfig失败错误号" + iErr+"----URL:"+url);
return null;
} else {
stringXMLOut.read();
System.out.println("输出文本大小:" + struXMLOutput.dwReturnedXMLSize);
//打印输出XML文本
String strOutXML = new String(stringXMLOut.byValue).trim();
struXMLStatus.read();
String strStatus = new String(struXMLStatus.byValue).trim();
return strOutXML;
}
}
}

@ -1,362 +0,0 @@
//package com.shxy.xyhkcamera.ascest;
//
//import com.shxy.xyhkcamera.hk.HCNetSDK;
//import com.sun.jna.Pointer;
//import com.sun.jna.ptr.IntByReference;
//
//import java.io.UnsupportedEncodingException;
//
///**
// * 功能:人脸下发、查询、删除、人员计划模板配置
// */
//public class UserManage {
// /**
// * 添加人员
// *
// * @param lUserID 登录句柄
// * @param employeeNo 工号
// * @throws UnsupportedEncodingException
// * @throws InterruptedException
// * @throws JSONException
// */
// public static void addUserInfo(int lUserID, String employeeNo) throws UnsupportedEncodingException, InterruptedException, JSONException {
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// //"POST /ISAPI/AccessControl/UserInfo/Record?format=json" 此URL也是下发人员
// String strInBuffer = "PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0) {
// System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// } else {
// System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 成功!");
//
// byte[] Name = "测试1".getBytes("utf-8"); //根据iCharEncodeType判断如果iCharEncodeType返回6则是UTF-8编码。
// //如果是0或者1或者2则是GBK编码
//
// //将中文字符编码之后用数组拷贝的方式,避免因为编码导致的长度问题
// String strInBuffer1 = "{\n" +
// " \"UserInfo\":{\n" +
// " \"employeeNo\":\""+employeeNo+"\",\n" +
// " \"name\":\"";
// String strInBuffer2 = "\",\n" +
// " \"userType\":\"normal\",\n" +
// " \"Valid\":{\n" +
// " \"enable\":true,\n" +
// " \"beginTime\":\"2019-08-01T17:30:08\",\n" +
// " \"endTime\":\"2030-08-01T17:30:08\",\n" +
// " \"timeType\":\"local\"\n" +
// " },\n" +
// " \"belongGroup\":\"1\",\n" +
// " \"doorRight\":\"1\",\n" +
// " \"RightPlan\":[\n" +
// " {\n" +
// " \"doorNo\":1,\n" +
// " \"planTemplateNo\":\"1\"\n" +
// " }\n" +
// " ]\n" +
// " }\n" +
// "}";
// int iStringSize = Name.length + strInBuffer1.length() + strInBuffer2.length();
//
// HCNetSDK.BYTE_ARRAY ptrByte = new HCNetSDK.BYTE_ARRAY(iStringSize);
// System.arraycopy(strInBuffer1.getBytes(), 0, ptrByte.byValue, 0, strInBuffer1.length());
// System.arraycopy(Name, 0, ptrByte.byValue, strInBuffer1.length(), Name.length);
// System.arraycopy(strInBuffer2.getBytes(), 0, ptrByte.byValue, strInBuffer1.length() + Name.length, strInBuffer2.length());
// ptrByte.write();
//
// System.out.println(new String(ptrByte.byValue));
//
// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(1024);
//
// IntByReference pInt = new IntByReference(0);
// while (true) {
// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrByte.getPointer(), iStringSize, ptrOutuff.getPointer(), 1024, pInt);
// if (dwState == -1) {
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// }
// //读取返回的json并解析
// ptrOutuff.read();
// String strResult = new String(ptrOutuff.byValue).trim();
// System.out.println("dwState:" + dwState + ",strResult:" + strResult);
//
// JSONObject jsonResult = new JSONObject(strResult);
// int statusCode = jsonResult.getInt("statusCode");
// String statusString = jsonResult.getString("statusString");
// if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) {
// System.out.println("配置等待");
// Thread.sleep(10);
// continue;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) {
// System.out.println("下发人员失败, json retun:" + jsonResult.toString());
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) {
// System.out.println("下发人员异常, json retun:" + jsonResult.toString());
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) {//返回NET_SDK_CONFIG_STATUS_SUCCESS代表流程走通了但并不代表下发成功比如有些设备可能因为人员已存在等原因下发失败所以需要解析Json报文
// if (statusCode != 1) {
// System.out.println("下发人员成功,但是有异常情况:" + jsonResult.toString());
// } else {
// System.out.println("下发人员成功: json retun:" + jsonResult.toString());
// }
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// //下发人员时dwState其实不会走到这里因为设备不知道我们会下发多少个人所以长连接需要我们主动关闭
// System.out.println("下发人员完成");
// break;
// }
// }
// if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)) {
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// } else {
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// }
// }
// }
//
// /**
// * 查询人员信息
// * @param userID
// * @throws JSONException
// */
// public static void searchUserInfo(int userID) throws JSONException {
// HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组
// String strInBuffer = "POST /ISAPI/AccessControl/UserInfo/Search?format=json";
// System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
// ptrByteArray.write();
//
// int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(userID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
// if (lHandler < 0) {
// System.out.println("SearchUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// } else {
// //组装查询的JSON报文这边查询的是所有的人员
// JSONObject jsonObject = new JSONObject();
// JSONObject jsonSearchCond = new JSONObject();
//
// //如果需要查询指定的工号人员信息,把下面注释的内容去除掉即可
// /* JSONArray EmployeeNoList = new JSONArray();
// JSONObject employeeNo1 = new JSONObject();
// employeeNo1.put("employeeNo", "12346");
// JSONObject employeeNo2 = new JSONObject();
// employeeNo2.put("employeeNo", "1000");
// EmployeeNoList.put(employeeNo1);
// EmployeeNoList.put(employeeNo2);
// jsonSearchCond.put("EmployeeNoList", EmployeeNoList);*/
//
// jsonSearchCond.put("searchID", "20211126");
// jsonSearchCond.put("searchResultPosition", 0);
// jsonSearchCond.put("maxResults", 50);
// jsonObject.put("UserInfoSearchCond", jsonSearchCond);
//
// String strInbuff = jsonObject.toString();
// System.out.println("查询的json报文:" + strInbuff);
//
// //把string传递到Byte数组中后续用.getPointer()方法传入指针地址中。
// HCNetSDK.BYTE_ARRAY ptrInbuff = new HCNetSDK.BYTE_ARRAY(strInbuff.length());
// System.arraycopy(strInbuff.getBytes(), 0, ptrInbuff.byValue, 0, strInbuff.length());
// ptrInbuff.write();
//
// //定义接收结果的结构体
// HCNetSDK.BYTE_ARRAY ptrOutuff = new HCNetSDK.BYTE_ARRAY(10 * 1024);
//
// IntByReference pInt = new IntByReference(0);
//
// while (true) {
// /*
// dwOutBuffSize是输出缓冲区大小需要自定义指定大小如果接口报错错误码43.说明接收设备数据的缓冲区或存放图片缓冲区不足,应扩大缓冲区大小
// */
// int dwState = AcsMain.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrInbuff.getPointer(), strInbuff.length(), ptrOutuff.getPointer(), 20 * 1024, pInt);
// System.out.println(dwState);
// if (dwState == -1) {
// System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) {
// System.out.println("配置等待");
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// continue;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) {
// System.out.println("查询人员失败");
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) {
// System.out.println("查询人员异常");
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) {
// ptrOutuff.read();
// System.out.println("查询人员成功, json:" + new String(ptrOutuff.byValue).trim());
// break;
// } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
// System.out.println("获取人员完成");
// break;
// }
// }
//
// if (!AcsMain.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)) {
// System.out.println("NET_DVR_StopRemoteConfig接口调用失败错误码" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// } else {
// System.out.println("NET_DVR_StopRemoteConfig接口成功");
// lHandler = -1;
// }
// }
//
//
// }
//
// public static void deleteUserInfo(int userID) throws JSONException {
// //删除单个人员
//// String deleteUserjson="{\n" +
//// "\t\"UserInfoDetail\": {\t\n" +
//// "\t\t\"mode\": \"byEmployeeNo\",\t\n" +
//// "\t\t\"EmployeeNoList\": [\t\n" +
//// "\t\t\t{\n" +
//// "\t\t\t\t\"employeeNo\": \"test\"\t\n" +
//// "\t\t\t}\n" +
//// "\t\t]\n" +
//// "\n" +
//// "\t}\n" +
//// "}";
// //删除所有人员
// String deleteUserjson = "{\n" +
// "\t\"UserInfoDetail\": {\t\n" +
// "\t\t\"mode\": \"all\",\t\n" +
// "\t\t\"EmployeeNoList\": [\t\n" +
// "\t\t]\n" +
// "\n" +
// "\t}\n" +
// "}";
// String deleteUserUrl = "PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json";
// String result = TransIsapi.put_isapi(userID, deleteUserUrl, deleteUserjson);
// System.out.println(result);
// //获取删除进度
// while (true) {
// String getDeleteProcessUrl = "GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json";
// String deleteResult = TransIsapi.get_isapi(userID, getDeleteProcessUrl);
// JSONObject jsonObject = new JSONObject(deleteResult);
// JSONObject jsonObject1 = jsonObject.getJSONObject("UserInfoDetailDeleteProcess");
// String process = jsonObject1.getString("status");
// System.out.println("process ="+process);
// if (process.equals("processing")) {
// System.out.println("正在删除");
// continue;
// } else if (process.equals("success")) {
// System.out.println("删除成功");
// break;
// }else if(process.equals("failed")){
// System.out.println("删除失败");
// break;
// }
// }
// }
//
// /**
// * 人员计划模板配置
// *
// * @param userID 用户登录句柄
// * @param iPlanTemplateNumber 计划模板编号从1开始最大值从门禁能力集获取
// */
// public static void setCardTemplate(int userID, int iPlanTemplateNumber) {
// //设置卡权限计划模板参数
// HCNetSDK.NET_DVR_PLAN_TEMPLATE_COND struPlanCond = new HCNetSDK.NET_DVR_PLAN_TEMPLATE_COND();
// struPlanCond.dwSize = struPlanCond.size();
// struPlanCond.dwPlanTemplateNumber = iPlanTemplateNumber;//计划模板编号从1开始最大值从门禁能力集获取
// struPlanCond.wLocalControllerID = 0;//就地控制器序号[1,64]0表示门禁主机
// struPlanCond.write();
// HCNetSDK.NET_DVR_PLAN_TEMPLATE struPlanTemCfg = new HCNetSDK.NET_DVR_PLAN_TEMPLATE();
// struPlanTemCfg.dwSize = struPlanTemCfg.size();
// struPlanTemCfg.byEnable = 1; //是否使能0- 否1- 是
// struPlanTemCfg.dwWeekPlanNo = 2;//周计划编号0表示无效
// struPlanTemCfg.dwHolidayGroupNo[0] = 0;//假日组编号按值表示采用紧凑型排列中间遇到0则后续无效
// byte[] byTemplateName;
// try {
// byTemplateName = "CardTemplatePlan_2".getBytes("GBK");
// //计划模板名称
// for (int i = 0; i < HCNetSDK.NAME_LEN; i++) {
// struPlanTemCfg.byTemplateName[i] = 0;
// }
// System.arraycopy(byTemplateName, 0, struPlanTemCfg.byTemplateName, 0, byTemplateName.length);
// } catch (UnsupportedEncodingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// struPlanTemCfg.write();
// IntByReference pInt = new IntByReference(0);
// Pointer lpStatusList = pInt.getPointer();
// if (false == AcsMain.hCNetSDK.NET_DVR_SetDeviceConfig(userID, HCNetSDK.NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50, 1, struPlanCond.getPointer(), struPlanCond.size(), lpStatusList, struPlanTemCfg.getPointer(), struPlanTemCfg.size())) {
// System.out.println("NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50失败错误号" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// System.out.println("NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50成功");
// //获取卡权限周计划参数
// HCNetSDK.NET_DVR_WEEK_PLAN_COND struWeekPlanCond = new HCNetSDK.NET_DVR_WEEK_PLAN_COND();
// struWeekPlanCond.dwSize = struWeekPlanCond.size();
// struWeekPlanCond.dwWeekPlanNumber = 2;
// struWeekPlanCond.wLocalControllerID = 0;
// HCNetSDK.NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = new HCNetSDK.NET_DVR_WEEK_PLAN_CFG();
// struWeekPlanCond.write();
// struWeekPlanCfg.write();
// Pointer lpCond = struWeekPlanCond.getPointer();
// Pointer lpInbuferCfg = struWeekPlanCfg.getPointer();
// if (false == AcsMain.hCNetSDK.NET_DVR_GetDeviceConfig(userID, HCNetSDK.NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) {
// System.out.println("NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50失败错误号" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// return;
// }
// struWeekPlanCfg.read();
// struWeekPlanCfg.byEnable = 1; //是否使能0- 否1- 是
// /**避免时间段交叉,先初始化, 七天八小时*/
// for (int i = 0; i < 7; i++) {
// for (int j = 0; j < 8; j++) {
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].byEnable = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byHour = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byMinute = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.bySecond = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byHour = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byMinute = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.bySecond = 0;
// }
// }
// /**一周7天全天24小时*/
// for (int i = 0; i < 7; i++) {
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].byEnable = 1;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byHour = 21;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byMinute = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.bySecond = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byHour = 23;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byMinute = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.bySecond = 0;
// }
// /**一周7天每天设置2个时间段*/
// /*for(int i=0;i<7;i++)
// {
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].byEnable = 1;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byHour = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byMinute = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.bySecond = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byHour = 11;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byMinute = 59;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.bySecond = 59;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].byEnable = 1;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byHour = 13;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byMinute = 30;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.bySecond = 0;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byHour = 19;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byMinute = 59;
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.bySecond = 59;
// }*/
// struWeekPlanCfg.write();
// //设置卡权限周计划参数
// if (false == AcsMain.hCNetSDK.NET_DVR_SetDeviceConfig(userID, HCNetSDK.NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) {
// System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50失败错误号" + AcsMain.hCNetSDK.NET_DVR_GetLastError());
// } else {
// System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50成功");
// }
// }
//
//}

@ -1,69 +1,90 @@
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;
}
}
public static final int NET_SDK_CALLBACK_TYPE_STATUS = 0;
public static final int NET_SDK_CALLBACK_TYPE_PROGRESS = 1;
public static final int NET_SDK_CALLBACK_TYPE_DATA = 2;
//规则标定类型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;
}
}
public static final int POINT = 0;
public static final int MYSQLPOINT = 1;
public static final int FRAME = 1;
public static final int MYSQLFRAME = 3;
public static final int LINE = 2;
public static final int MYSQLLINE = 2;
//测温单位: 0- 摄氏度1- 华氏度2- 开尔文(K)
// 1=>摄氏度 2=>华氏度
public enum BYTHERMOMETRYUNIT {
SSD(0, 1),
HSD(1, 2),
KEW(2, 3);
private int value;
private int mysqlvalue;
public static final int SSD = 0;
public static final int MYSQLSSD = 1;
public static final int HSD = 1;
public static final int MYSQLHSD = 2;
public static final int KEW = 2;
public static final int MYSQLKEW = 3;
private BYTHERMOMETRYUNIT(int value, int mysqlvalue) {
this.value = value;
this.mysqlvalue = mysqlvalue;
}
// //回调状态值
// 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;
// }
// }
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;
// }
// }
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;
// }
// }
}

@ -48,6 +48,10 @@ public class HcNetSdkUtil {
return hCNetSDK;
}
public HCNetSDK getInstance() {
return hCNetSDK;
}
/**
* 使 linux
*/

@ -1,4 +0,0 @@
package com.shxy.xyhkcamera.hk;
public enum erew {
}

@ -1,18 +0,0 @@
package com.shxy.xyhkcamera.interfacesss;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
/**
* <p>
*
* </p>
*
* @author jingjing
* @since 2024-05-20
*/
public interface Testint{
void test(DataEaifHEntity entity);
}

@ -1,16 +0,0 @@
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);
}
}

@ -1,19 +1,75 @@
package com.shxy.xyhkcamera.service;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.shxy.xyhkcamera.hk.HCNetSDK;
import com.shxy.xyhkcamera.hk.HKConfigEnum;
import com.shxy.xyhkcamera.hk.HcNetSdkUtil;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Service
@Slf4j
public class AsyncService {
@Autowired
DataEaifHService dataEaifHService;
@Async("syncExecutorPool")
public void executeAsyncTask(DataEaifHEntity eaifHEntity) {
public void executeAsyncTask(Pointer lpBuffer, Integer id) {
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.SSD) {
entity.setUnit((byte) HKConfigEnum.MYSQLSSD);
} else if (byThermometryUnit == HKConfigEnum.HSD) {
entity.setUnit((byte) HKConfigEnum.MYSQLHSD);
} else if (byThermometryUnit == HKConfigEnum.KEW) {
entity.setUnit((byte) HKConfigEnum.MYSQLKEW);
}
//数据库中1->点2->线3->框
if (byRuleCalibType == HKConfigEnum.POINT) {
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.MYSQLPOINT);
entity.setMid(Double.valueOf(0));
} else if (byRuleCalibType == HKConfigEnum.FRAME || byRuleCalibType == HKConfigEnum.LINE) {
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.FRAME) {
entity.setType((byte) HKConfigEnum.MYSQLFRAME);
} else if (byRuleCalibType == HKConfigEnum.LINE) {
entity.setType((byte) HKConfigEnum.MYSQLLINE);
}
}
entity.setStd(Double.valueOf(0));
entity.setCapturetime(LocalDateTime.now());
log.info("数据是:" + entity.toString());
// 异步执行的任务
dataEaifHService.save(eaifHEntity);
dataEaifHService.save(entity);
}
}

@ -1,37 +1,30 @@
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.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.shxy.xyhkcamera.entity.DataEaifHEntity;
import com.shxy.xyhkcamera.entity.ModevEaifEntity;
import com.shxy.xyhkcamera.entity.ModevEntity;
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.service.*;
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.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.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;
@Service
@ -39,224 +32,166 @@ import java.util.List;
public class TempMeasureServiceImpl implements TempMeasureService {
@Autowired
ModevService modevService;
@Autowired
DataEaifHService dataEaifHService;
@Autowired
DataEaifHMapper dataEaifHMapper;
ModevEaifService modevEaifService;
@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;
// /**
// * 海康用户名
// */
// @Value("${hkconfig.user}")
// private String user;
// /**
// * 海康密码
// */
// @Value("${hkconfig.password}")
// private String password;
//初始化锁的状态变量为0
// private AtomicInteger state = new AtomicInteger(0);
// private int num;
// // private int handle = -1;
//
// public void lock() {
// //判断如果state变量值如果是0则获取锁否则一直循环自旋直到变量为0获取锁
// while (!state.compareAndSet(0, 1)) {
// // 自旋等待,直到成功获取锁
// System.out.println(Thread.currentThread().getName() + " 自旋中。。。。");
// }
// }
//
// public void unlock() {
// state.set(0); // 释放锁
// }
@Override
public void measure() {
// ReentrantLock lock = new ReentrantLock(true);
hcNetSdkUtil.init();
HCNetSDK instance = hcNetSdkUtil.createSDKInstance();
HCNetSDK instance = hcNetSdkUtil.getInstance();
List<ModevEntity> 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<DataEaifHEntity> 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);
for (int i = 0; i < list.size(); i++) {
// for (int i = 0; i < 5; i++) {
ModevEntity modevEntity = list.get(i);
Integer id = modevEntity.getId();
String ip = modevEntity.getIp();
String user = modevEntity.getUsername();
String password = modevEntity.getPwd();
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);
Short aShort = Short.valueOf(port);
if (StringUtils.isBlank(ip)) {
continue;
}
int admin = hcNetSdkUtil.login_V40(ip, aShort, user, password);
// int admin = hcNetSdkUtil.login_V40("192.168.1.64", (short) 8000, "admin", "SHxy@510");
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);
List<ModevEaifEntity> modevEaifEntityList = modevEaifService.list(Wrappers.lambdaQuery(ModevEaifEntity.class).eq(ModevEaifEntity::getEqmid, id));
if (CollectionUtils.isNotEmpty(modevEaifEntityList)) {
for (int z = 0; z < modevEaifEntityList.size(); z++) {
// this.lock();
// handle = -1;
ModevEaifEntity modevEaifEntity = modevEaifEntityList.get(z);
Integer nPresetId = modevEaifEntity.getNPresetId();//预置点位
Integer nRuleId = modevEaifEntity.getNRuleId();//规则编号
Integer nMeterType = modevEaifEntity.getNMeterType();//测试点类型
if (nPresetId != null) {
boolean b = instance.NET_DVR_PTZPreset_Other(admin, 2, HCNetSDK.GOTO_PRESET, nPresetId);
// boolean b = instance.NET_DVR_PTZCruise_Other(admin, 2, HCNetSDK.RUN_SEQ, (byte) 1, (byte) 1, (short) 1);
if (b) {
log.info("云台预置位成功:" + nPresetId);
HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND cond = new HCNetSDK.NET_DVR_REALTIME_THERMOMETRY_COND();
cond.read();
cond.dwSize = cond.size();
cond.byRuleID = nRuleId.byteValue();
cond.dwChan = 2;
cond.wInterval = 3;
cond.byMode = 1;
cond.write();
// ArrayList<DataEaifHEntity> list1 = new ArrayList<>();
HCNetSDK.FRemoteConfigCallBack cbStateCallBack = new HCNetSDK.FRemoteConfigCallBack() {
@Override
public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
log.info("长连接返回: dwType:" + Integer.toHexString(dwType));
// lock.lock();
log.info("已上锁");
if (dwType == HKConfigEnum.NET_SDK_CALLBACK_TYPE_DATA) {
// DataEaifHEntity entity = getDataEaifHEntity(lpBuffer, id);
// list1.add(entity);
// dataEaifHService.save(entity);
asyncService.executeAsyncTask(lpBuffer, id);
log.info("准备解锁");
// lock.unlock();
log.info("已经解锁");
if (handle != -1) {
log.info("开始退出1");
instance.NET_DVR_StopRemoteConfig(handle);
// instance.NET_DVR_Logout(admin);
}
}
// else {
// log.info("开始退出2");
// 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(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// asyncService.executeAsyncTask(entity);
// if (handle != -1) {
// log.info("开始退出1" + handle);
// instance.NET_DVR_StopRemoteConfig(handle);
//// instance.NET_DVR_Logout(admin);
// }
// log.info("开始插入测温数据");
////
//// 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);
// if (CollectionUtils.isNotEmpty(list1)) {
// DataEaifHEntity entity = list1.get(0);
// if (entity != null) {
// dataEaifHService.save(entity);
// log.info("开始插入测温数据成功");
// }
// }
}
} else {
int y = instance.NET_DVR_GetLastError();
IntByReference intByReference1 = new IntByReference(y);
log.error("云台失败 " + "错误码:" + y + " 错误信息:" + instance.NET_DVR_GetErrorMsg(intByReference1));
}
}
}
};
//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("长连接连接成功!!!");
log.error("登录失败 " + "IP:" + ip + " " + port);
}
// try {
// Thread.sleep(5000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
} else {
log.error("登录失败 " + "IP:" + ip + " " + port);
log.error("该设备" + id + "没有配置预置位");
}
}
} else {

@ -32,7 +32,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
url: jdbc:mysql://192.168.1.190:3306/cac?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://10.0.17.25:3306/cacdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 初始连接数
@ -42,7 +42,7 @@ spring:
# 最大连接池数量
maxActive: 50
# 配置获取连接等待超时的时间
maxWait: 60000
maxWait: 10000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 30000
# 配置一个连接在池中最小生存的时间,单位是毫秒

Loading…
Cancel
Save