zhanghua
2024-09-24 1169887e810367b74ea612738cf0a354f8bd6470
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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;
    }
 
}