Browse Source

进行数据解析处理中

doorRight设置
chd 3 years ago
parent
commit
b2eecf33ac
4 changed files with 245 additions and 696 deletions
  1. +136
    -673
      src/main/java/com/hkversion/AlarmDataParse.java
  2. +5
    -0
      src/main/java/com/yzx/IHardwareEquipment.java
  3. +37
    -8
      src/main/java/com/yzx/Main.java
  4. +67
    -15
      src/main/java/com/yzx/impl/HKVersion.java

+ 136
- 673
src/main/java/com/hkversion/AlarmDataParse.java
File diff suppressed because it is too large
View File


+ 5
- 0
src/main/java/com/yzx/IHardwareEquipment.java View File

@@ -7,4 +7,9 @@ public interface IHardwareEquipment {
*/
void cleanup();

String getDeployInfo();

//获取状态
int getStatus();

}

+ 37
- 8
src/main/java/com/yzx/Main.java View File

@@ -5,18 +5,47 @@ import com.yzx.callback.AlarmCallback;
import com.yzx.impl.HKVersion;
import com.yzx.impl.HardwareEquipmentInfo;

import java.util.ArrayList;
import java.util.List;

public class Main {

private static List<IHardwareEquipment> hardwareEquipmentList = new ArrayList<>();

private static AlarmCallback alarmCallback = new AlarmCallbackImpl();
public static void main(String[] args) {
new Main().run();
}

AlarmCallback alarmCallback = new AlarmCallback() {
@Override
public void process(JSONObject json) {
System.out.println(" 告警回调触发......");
System.out.println("json = " + json);
public void run(){
//定时任务每分钟执行一次
//问题 人员名称获取不到?
//1.通过isapi 的方式获取设备布防状态,如果没有布防,则更新数据库,并重新布防
//2.一个设备开一个线程处理数据
//3.如果文件上传失败,需要重试,如果失败了,先存在本地,利用数据库的id作为标识,写一个定时任务,重新更新和上传.

new Thread(() -> {
IHardwareEquipment hardwareEquipment1 = new HKVersion(new HardwareEquipmentInfo("192.168.69.128",(short) 8000,"admin","yzx123456",alarmCallback));
if(hardwareEquipment1.getStatus() == 1){
String deployInfo1 = hardwareEquipment1.getDeployInfo();
System.out.println("deployInfo = " + deployInfo1);
}
};
}).start();

new HKVersion(new HardwareEquipmentInfo("192.168.69.128",(short) 8000,"admin","yzx123456",alarmCallback));
new HKVersion(new HardwareEquipmentInfo("192.168.69.140",(short) 8000,"admin","yzx123456",alarmCallback));
new Thread(() -> {
IHardwareEquipment hardwareEquipment2 = new HKVersion(new HardwareEquipmentInfo("192.168.69.140",(short) 8000,"admin","yzx123456",alarmCallback));
if(hardwareEquipment2.getStatus() == 1){
String deployInfo2 = hardwareEquipment2.getDeployInfo();
System.out.println("deployInfo = " + deployInfo2);
}
}).start();
}

private static class AlarmCallbackImpl implements AlarmCallback{
@Override
public void process(JSONObject json) {
System.out.println(" 告警回调触发......");
System.out.println("json = " + json);
}
};
}

+ 67
- 15
src/main/java/com/yzx/impl/HKVersion.java View File

@@ -13,9 +13,9 @@ public class HKVersion implements IHardwareEquipment {

//海康SDK
private static HCNetSDK hCNetSDK;
private int[] lUserID = new int[]{0, 0, 0, 0, 0};//用户句柄 实现对设备登录
private int[] lAlarmHandle = new int[]{-1, -1, -1, -1, -1};//报警布防句柄
private int[] lAlarmHandle_V50 = new int[]{-1, -1, -1, -1, -1}; //v50报警布防句柄
private int lUserID = 0;//用户句柄 实现对设备登录
private int lAlarmHandle = -1;//报警布防句柄
private int lAlarmHandle_V50 = -1; //v50报警布防句柄
private int lListenHandle = -1;//报警监听句柄
private FMSGCallBack_V31 fMSFCallBack_V31 = null;
private FMSGCallBack fMSFCallBack=null;
@@ -59,13 +59,12 @@ public class HKVersion implements IHardwareEquipment {
struNET_DVR_LOCAL_GENERAL_CFG.write();
Pointer pStrNET_DVR_LOCAL_GENERAL_CFG = struNET_DVR_LOCAL_GENERAL_CFG.getPointer();
hCNetSDK.NET_DVR_SetSDKLocalCfg(17, pStrNET_DVR_LOCAL_GENERAL_CFG);
this.Login_V40(0, info.getIp(), info.getPort(), info.getUsername(), info.getPassword()); //登录设备

this.SetAlarm(0);//报警布防,和报警监听二选一即可
this.Login_V40(info.getIp(), info.getPort(), info.getUsername(), info.getPassword()); //登录设备
this.SetAlarm();//报警布防,和报警监听二选一即可
}

private void SetAlarm(int i) {
if (lAlarmHandle[i] < 0)//尚未布防,需要布防
private void SetAlarm() {
if (lAlarmHandle < 0)//尚未布防,需要布防
{
//报警布防参数设置
HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
@@ -74,9 +73,9 @@ public class HKVersion implements IHardwareEquipment {
m_strAlarmInfo.byAlarmInfoType = 1; // 智能交通报警信息上传类型:0- 老报警信息(NET_DVR_PLATE_RESULT),1- 新报警信息(NET_ITS_PLATE_RESULT)
m_strAlarmInfo.byDeployType = 0; //布防类型:0-客户端布防,1-实时布防
m_strAlarmInfo.write();
lAlarmHandle[i] = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID[i], m_strAlarmInfo);
System.out.println("lAlarmHandle: " + lAlarmHandle[i]);
if (lAlarmHandle[i] == -1) {
lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
System.out.println("lAlarmHandle: " + lAlarmHandle);
if (lAlarmHandle == -1) {
System.out.println("布防失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
return;
} else {
@@ -92,13 +91,12 @@ public class HKVersion implements IHardwareEquipment {
/**
* 设备登录V40 与V30功能一致
*
* @param i 登录设备编号
* @param ip 设备IP
* @param port SDK端口,默认设备的8000端口
* @param user 设备用户名
* @param psw 设备密码
*/
private void Login_V40(int i, String ip, short port, String user, String psw) {
private void Login_V40( String ip, short port, String user, String psw) {
//注册
HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
@@ -120,8 +118,8 @@ public class HKVersion implements IHardwareEquipment {
// m_strLoginInfo.byLoginMode=1; //ISAPI登录
m_strLoginInfo.write();

lUserID[i] = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (lUserID[i] == -1) {
lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
if (lUserID == -1) {
System.out.println("登录失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
} else {
System.out.println(ip + ":设备登录成功!");
@@ -133,6 +131,60 @@ public class HKVersion implements IHardwareEquipment {
hCNetSDK.NET_DVR_Cleanup();
}

@Override
public String getDeployInfo() {
String url = "GET /ISAPI/AccessControl/DeployInfo";
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(hCNetSDK.NET_DVR_STDXMLConfig(lUserID,struXMLInput,struXMLOutput)){
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;
}else{
System.out.println("获取布防信息失败:" + hCNetSDK.NET_DVR_GetLastError());
return null;
}
}

@Override
public int getStatus() {
if(lUserID != 0 && lAlarmHandle != -1){
return 1;
}
return -1;
}

/**
* 动态库加载
*


Loading…
Cancel
Save