Просмотр исходного кода

进行数据解析处理中

doorRight设置
chd 3 лет назад
Родитель
Сommit
5c8408df07
8 измененных файлов: 39 добавлений и 12 удалений
  1. +6
    -3
      README.md
  2. +7
    -2
      pom.xml
  3. +12
    -0
      src/main/java/com/hkversion/AlarmDataParse.java
  4. +7
    -1
      src/main/java/com/hkversion/FMSGCallBack.java
  5. +4
    -4
      src/main/java/com/yzx/Main.java
  6. +3
    -1
      src/main/java/com/yzx/callback/AlarmCallback.java
  7. +0
    -1
      src/main/java/com/yzx/impl/HKVersion.java
  8. Двоичные данные
      src/main/libs/jna.jar

+ 6
- 3
README.md Просмотреть файл

@@ -1,4 +1,7 @@
该工程用于项目引入访问硬件设备 该工程用于项目引入访问硬件设备
支持硬件厂商:
1.大华
2.海康
支持硬件厂商:
2.海康

因海康和大华使用的jna版本不同大华的高版本,海康的低版本,所以只支持一方
解决办法是使用大华提供的高版本jna,将海康的HCNetSDK.java文件中的Structure 继承到最新版本jna


+ 7
- 2
pom.xml Просмотреть файл

@@ -20,9 +20,14 @@
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.java.dev.jna</groupId>
<groupId>com.hikvision</groupId>
<artifactId>netsdk</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.sun.jna</groupId>
<artifactId>jna</artifactId> <artifactId>jna</artifactId>
<version>5.4.0</version>
<version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>


+ 12
- 0
src/main/java/com/hkversion/AlarmDataParse.java Просмотреть файл

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONObject;
import com.common.CommonUtil; import com.common.CommonUtil;
import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import com.yzx.callback.AlarmCallback; import com.yzx.callback.AlarmCallback;
import sun.misc.BASE64Encoder;


import java.io.*; import java.io.*;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date; import java.util.Date;


/** /**
@@ -582,6 +584,11 @@ public class AlarmDataParse {
System.out.println("【门禁主机报警信息】卡号:" + new String(strACSInfo.struAcsEventInfo.byCardNo).trim() + ",卡类型:" + System.out.println("【门禁主机报警信息】卡号:" + new String(strACSInfo.struAcsEventInfo.byCardNo).trim() + ",卡类型:" +
strACSInfo.struAcsEventInfo.byCardType + ",报警主类型:" + Integer.toHexString(strACSInfo.dwMajor) + ",报警次类型:" + Integer.toHexString(strACSInfo.dwMinor)); strACSInfo.struAcsEventInfo.byCardType + ",报警主类型:" + Integer.toHexString(strACSInfo.dwMajor) + ",报警次类型:" + Integer.toHexString(strACSInfo.dwMinor));
System.out.println("工号1:" + strACSInfo.struAcsEventInfo.dwEmployeeNo); System.out.println("工号1:" + strACSInfo.struAcsEventInfo.dwEmployeeNo);
json.put("dwEmployeeNo",strACSInfo.struAcsEventInfo.dwEmployeeNo);
json.put("byCardNo",new String(strACSInfo.struAcsEventInfo.byCardNo).trim());
json.put("byCardType",strACSInfo.struAcsEventInfo.byCardType);
json.put("dwMajor",Integer.toHexString(strACSInfo.dwMajor));
json.put("dwMinor",Integer.toHexString(strACSInfo.dwMinor));
//温度信息(如果设备支持测温功能,人脸温度信息从NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体获取) //温度信息(如果设备支持测温功能,人脸温度信息从NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体获取)
if (strACSInfo.byAcsEventInfoExtendV20 == 1) { if (strACSInfo.byAcsEventInfoExtendV20 == 1) {
HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20 strAcsInfoExV20 = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20(); HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20 strAcsInfoExV20 = new HCNetSDK.NET_DVR_ACS_EVENT_INFO_EXTEND_V20();
@@ -590,6 +597,7 @@ public class AlarmDataParse {
pAcsInfoExV20.write(0, strACSInfo.pAcsEventInfoExtendV20.getByteArray(0, strAcsInfoExV20.size()), 0, strAcsInfoExV20.size()); pAcsInfoExV20.write(0, strACSInfo.pAcsEventInfoExtendV20.getByteArray(0, strAcsInfoExV20.size()), 0, strAcsInfoExV20.size());
strAcsInfoExV20.read(); strAcsInfoExV20.read();
System.out.println("实时温度值:" + strAcsInfoExV20.fCurrTemperature); System.out.println("实时温度值:" + strAcsInfoExV20.fCurrTemperature);
json.put("currTemperature",strAcsInfoExV20.fCurrTemperature);
} }
//考勤状态 //考勤状态
if (strACSInfo.byAcsEventInfoExtend == 1) { if (strACSInfo.byAcsEventInfoExtend == 1) {
@@ -600,6 +608,8 @@ public class AlarmDataParse {
strAcsInfoEx.read(); strAcsInfoEx.read();
System.out.println("考勤状态:" + strAcsInfoEx.byAttendanceStatus); System.out.println("考勤状态:" + strAcsInfoEx.byAttendanceStatus);
System.out.println("工号2:" + new String(strAcsInfoEx.byEmployeeNo).trim()); System.out.println("工号2:" + new String(strAcsInfoEx.byEmployeeNo).trim());
json.put("byEmployeeNo",new String(strAcsInfoEx.byEmployeeNo).trim());
json.put("attendanceStatus",strAcsInfoEx.byAttendanceStatus);
} }


/** /**
@@ -631,6 +641,7 @@ public class AlarmDataParse {
buffers.get(bytes); buffers.get(bytes);
fout.write(bytes); fout.write(bytes);
fout.close(); fout.close();
json.put("pic_bytes",bytes);
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@@ -639,6 +650,7 @@ public class AlarmDataParse {
e.printStackTrace(); e.printStackTrace();
} }
} }
callback.process(json);
break; break;


case HCNetSDK.COMM_ID_INFO_ALARM: //身份证信息 case HCNetSDK.COMM_ID_INFO_ALARM: //身份证信息


+ 7
- 1
src/main/java/com/hkversion/FMSGCallBack.java Просмотреть файл

@@ -1,6 +1,7 @@
package com.hkversion; package com.hkversion;


import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import com.yzx.callback.AlarmCallback;




/** /**
@@ -8,9 +9,14 @@ import com.sun.jna.Pointer;
* @create 2022-08-15-17:26 * @create 2022-08-15-17:26
*/ */
public class FMSGCallBack implements HCNetSDK.FMSGCallBack { public class FMSGCallBack implements HCNetSDK.FMSGCallBack {

private AlarmCallback callback;
public FMSGCallBack(AlarmCallback callback){
this.callback = callback;
}
//报警信息回调函数 //报警信息回调函数
public void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) { public void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser);
AlarmDataParse.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser,callback);
return; return;
} }
} }

+ 4
- 4
src/main/java/com/yzx/Main.java Просмотреть файл

@@ -1,5 +1,6 @@
package com.yzx; package com.yzx;


import com.alibaba.fastjson.JSONObject;
import com.yzx.callback.AlarmCallback; import com.yzx.callback.AlarmCallback;
import com.yzx.impl.HKVersion; import com.yzx.impl.HKVersion;
import com.yzx.impl.HardwareEquipmentInfo; import com.yzx.impl.HardwareEquipmentInfo;
@@ -9,14 +10,13 @@ public class Main {


AlarmCallback alarmCallback = new AlarmCallback() { AlarmCallback alarmCallback = new AlarmCallback() {
@Override @Override
public void process(String json) {
public void process(JSONObject json) {
System.out.println(" 告警回调触发......"); System.out.println(" 告警回调触发......");
System.out.println("json = " + json); System.out.println("json = " + json);
} }
}; };


HardwareEquipmentInfo info = new HardwareEquipmentInfo("192.168.69.128",(short) 8000,"admin","yzx123456",alarmCallback);
IHardwareEquipment hardwareEquipment = new HKVersion(info);

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

+ 3
- 1
src/main/java/com/yzx/callback/AlarmCallback.java Просмотреть файл

@@ -1,8 +1,10 @@
package com.yzx.callback; package com.yzx.callback;


import com.alibaba.fastjson.JSONObject;

public interface AlarmCallback { public interface AlarmCallback {
/** /**
* 告警回调函数,调用方必须实现该函数方可收到硬件设备的告警数据 * 告警回调函数,调用方必须实现该函数方可收到硬件设备的告警数据
*/ */
void process(String json);
void process(JSONObject json);
} }

+ 0
- 1
src/main/java/com/yzx/impl/HKVersion.java Просмотреть файл

@@ -35,7 +35,6 @@ public class HKVersion implements IHardwareEquipment {
public HKVersion(HardwareEquipmentInfo info){ public HKVersion(HardwareEquipmentInfo info){
this.info = info; this.info = info;
this.alarm(info.getAlarmCallback()); this.alarm(info.getAlarmCallback());

} }


private void alarm(AlarmCallback callback){ private void alarm(AlarmCallback callback){


Двоичные данные
src/main/libs/jna.jar Просмотреть файл


Загрузка…
Отмена
Сохранить