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 data = new Vector(); @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; } }