package com.ycl.util.dahua.alarm;
|
|
import com.sun.jna.NativeLong;
|
import com.sun.jna.Pointer;
|
import com.ycl.util.dahua.lib.NetSDKLib;
|
|
import java.awt.*;
|
import java.util.Vector;
|
|
public class AlarmDataCB implements NetSDKLib.fMessCallBack {
|
|
public Vector<AlarmEventInfo> data = new Vector<AlarmEventInfo>();
|
|
@Override
|
public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID,
|
Pointer pStuEvent, int dwBufLen, String strDeviceIP,
|
NativeLong nDevicePort, Pointer dwUser) {
|
|
switch (lCommand) {
|
case NetSDKLib.NET_ALARM_ALARM_EX:
|
case NetSDKLib.NET_MOTION_ALARM_EX:
|
case NetSDKLib.NET_VIDEOLOST_ALARM_EX:
|
case NetSDKLib.NET_SHELTER_ALARM_EX:
|
case NetSDKLib.NET_DISKFULL_ALARM_EX:
|
case NetSDKLib.NET_DISKERROR_ALARM_EX: {
|
byte[] alarm = new byte[dwBufLen];
|
pStuEvent.read(0, alarm, 0, dwBufLen);
|
for (int i = 0; i < dwBufLen; i++) {
|
if (alarm[i] == 1) {
|
AlarmEventInfo alarmEventInfo = new AlarmEventInfo(i, lCommand, AlarmStatus.ALARM_START);
|
System.out.print("返回结果:");
|
System.out.println(alarmEventInfo);
|
if (!data.contains(alarmEventInfo)) {
|
data.add(alarmEventInfo);
|
}
|
} else {
|
AlarmEventInfo alarmEventInfo = new AlarmEventInfo(i, lCommand, AlarmStatus.ALARM_STOP);
|
if (data.remove(alarmEventInfo)) {
|
}
|
}
|
}
|
break;
|
}
|
default:
|
break;
|
|
}
|
|
return true;
|
}
|
|
}
|