1
zhanghua
2024-09-26 c775c6953d9759e70f08acbfa8f6d7490aaae3d1
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
package com.netsdk.demo.customize;
 
import com.netsdk.demo.util.CaseMenu;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.ToolKits;
import com.netsdk.lib.Utils;
import com.netsdk.lib.enumeration.EM_RECORD_BACKUP_FIND_TYPE;
import com.netsdk.lib.structure.*;
import com.netsdk.lib.utils.Initialization;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import java.nio.charset.Charset;
import static com.netsdk.lib.NetSDKLib.EM_FILE_QUERY_TYPE.NET_FILE_QUERY_EXAM;
 
/**
 * @author 291189
 * @version 1.0
 * @description GIP220427035 & GIP220601015 
 * @date 2022/5/16 20:07
 */
public class FindRecordBackupRestoreTaskInfosDemo extends Initialization {
 
// 跨平台编码
private static final Charset sdkEncode = Charset.forName(Utils.getPlatformEncode());
    // 任务ID
    private final int[] taskID = new int[1024];
 
    /**
     * 根据查询条件返回录像备份任务的信息表
     */
    public void findTaskInfos() {
        // 入参
        NET_IN_FIND_REC_BAK_RST_TASK pInParam = new NET_IN_FIND_REC_BAK_RST_TASK();
        // 根据条件查询备份任务的查询方式
        pInParam.emFindType = EM_RECORD_BACKUP_FIND_TYPE.EM_RECORD_BACKUP_FIND_TYPE_BY_TASKID.getValue();
        if(pInParam.emFindType == 1) {
 
            // 按照任务号查询
            pInParam.dwTaskID =1897909;
        }else if(pInParam.emFindType == 2) {
            // 按照通道和录制时间段查询
            // 通道号
            pInParam.nLocalChannelID = 3;
            //录制时间段
            pInParam.stuStartTime.setTime(2020, 10, 1, 0, 0, 0);
            pInParam.stuEndTime.setTime(2023, 10, 1, 23, 0, 0);
        }else if(pInParam.emFindType==3){
            //按照主动注册的设备ID查
            byte[] szDeviceID = pInParam.szDeviceID;
            String deviceID="evs52172121184";
            ToolKits.StringToByteArr(deviceID,szDeviceID);
 
        }
        pInParam.write();
 
        // 出参
        NET_OUT_FIND_REC_BAK_RST_TASK pOutParam = new NET_OUT_FIND_REC_BAK_RST_TASK();
        pOutParam.nMaxCount = 100;
        NetSDKLib.NET_REC_BAK_RST_TASK[] Tasks = new NetSDKLib.NET_REC_BAK_RST_TASK[pOutParam.nMaxCount];
        for (int i = 0; i < pOutParam.nMaxCount; i++) {
            Tasks[i] = new NetSDKLib.NET_REC_BAK_RST_TASK();
        }
        pOutParam.pTasks = new Memory(Tasks[0].size() * pOutParam.nMaxCount);
        pOutParam.pTasks.clear(Tasks[0].size() * pOutParam.nMaxCount);
        ToolKits.SetStructArrToPointerData(Tasks, pOutParam.pTasks);
 
 
        pOutParam.write();
        boolean ret = netSdk.CLIENT_FindRecordBackupRestoreTaskInfos(loginHandle, pInParam.getPointer(), pOutParam.getPointer(), 3000);
 
        if (!ret) {
            System.err.printf("findTaskInfosByTime false Last Error[0x%x]\n", netSdk.CLIENT_GetLastError());
            return;
        }else {
            System.out.println("findTaskInfosByTime success");
        }
        pOutParam.read();
        ToolKits.GetPointerDataToStructArr(pOutParam.pTasks,Tasks);
 
        int nRetCount = Math.min(pOutParam.nMaxCount, pOutParam.nRetCount);
        ToolKits.GetPointerDataToStructArr(pOutParam.pTasks, Tasks);
        if (nRetCount == 0) {
            System.out.println("没有发现任务;请添加");
            return;
        }
        for (int i = 0; i < nRetCount; i++) {
            String szDevice = new String(Tasks[i].szDeviceID, sdkEncode).trim();
            taskID[i] = Tasks[i].nTaskID;
            System.out.println("任务ID: " + taskID[i] + " 设备ID: " + szDevice
                    + " 通道号: " + Tasks[i].nChannelID + " 录像开始时间: " + Tasks[i].stuStartTime.toStringTime()
                    + " 录像结束时间: " + Tasks[i].stuEndTime.toStringTime()
                    +" 任务开始时间, nState为1、2、3的情况下该时间点有效: "+Tasks[i].stuTaskStartTime.toStringTime()
                    +" 任务结束时间, nState为2、3的情况下该时间点有效: "+Tasks[i].stuTaskEndTime.toStringTime()
                     +"备份源通道:"+Tasks[i].nRemoteChannel);
 
            System.out.println("当前备份状态(0 等待 1 进行中 2 完成 3 失败):" + Tasks[i].nState);
            System.out.println(" 失败的原因, 当nState字段为3的情况下有效,参考EM_RECORD_BACKUP_FAIL_REASON:"+Tasks[i].emFailReason);
        }
    }
   // 按查询条件查询文件
    public  void  FindFileEx(){
 
        //对应 NET_MEDIAFILE_EXAM_PARAM 和 NET_MEDIAFILE_EXAM_INFO
        NET_MEDIAFILE_EXAM_PARAM netMediafileExamParam=new NET_MEDIAFILE_EXAM_PARAM();
 
        String name="张三";
        ToolKits.StringToByteArr(name, netMediafileExamParam.szName);
 
        Pointer  pointer = new Memory(netMediafileExamParam.size());
        pointer.clear(netMediafileExamParam.size());
        ToolKits.SetStructDataToPointer(netMediafileExamParam,pointer,0);
 
        NetSDKLib.LLong lLong
                = netSdk.CLIENT_FindFileEx(loginHandle, NET_FILE_QUERY_EXAM, pointer, null, 3000);
        if(lLong.longValue()!=0){
            System.out.println("CLIENT_FindFileEx  success lLong:"+lLong);
        }else {
            System.err.printf("CLIENT_FindFileEx false Last Error[0x%x]\n", netSdk.CLIENT_GetLastError());
        }
    }
 
 
        public void SetExamRecordingPlans(){
            NET_IN_SET_EXAM_RECORDING_PLANS input=new NET_IN_SET_EXAM_RECORDING_PLANS();
 
            input.nPlansNum=1;
 
 
            NET_EXAM_RECORDING_PLAN_INFO[]  info=new NET_EXAM_RECORDING_PLAN_INFO[2];
                for(int i=0;i<info.length;i++){
                    info[i]=new NET_EXAM_RECORDING_PLAN_INFO();
 
                    String name="张三";
                    ToolKits.StringToByteArr(name, info[i].szName);
                    String szNumber="878789";
                    ToolKits.StringToByteArr(szNumber, info[i].szNumber);
 
                    info[i].nCameraIPNum=2;
 
                    String ip1="172.12.10.37";
                    String ip2="10.33.12.205";
 
                    System.arraycopy(ip1.getBytes(), 0,  info[i].szCameraIP, 0, ip1.getBytes().length);
 
                    System.arraycopy(ip2.getBytes(), 0,  info[i].szCameraIP, 32, ip2.getBytes().length);
                    info[i].stuStartTime.setTime(2022, 5, 21, 9, 0, 0);
                    info[i].stuEndTime.setTime(2022, 5, 21, 16, 30, 0);
 
                }
 
 
            Pointer pointerInfo = new Memory(new NET_EXAM_RECORDING_PLAN_INFO().size() * info.length);
 
                pointerInfo.clear(new NET_EXAM_RECORDING_PLAN_INFO().size() * info.length);
                    ToolKits.SetStructArrToPointerData(info,pointerInfo);
 
                    input.pstuPlans=pointerInfo;
 
 
            Pointer pointerInput = new Memory(input.size());
            pointerInput.clear(input.size());
            ToolKits.SetStructDataToPointer(input,pointerInput,0);
 
 
 
            NET_OUT_SET_EXAM_RECORDING_PLANS outPut=new NET_OUT_SET_EXAM_RECORDING_PLANS();
 
            Pointer pointerOut = new Memory(outPut.size());
            pointerOut.clear(outPut.size());
            ToolKits.SetStructDataToPointer(outPut,pointerOut,0);
 
 
            boolean b = netSdk.CLIENT_SetExamRecordingPlans(loginHandle, pointerInput, pointerOut, 3000);
            if (!b) {
                System.err.printf("CLIENT_SetExamRecordingPlans false Last Error[0x%x]\n", netSdk.CLIENT_GetLastError());
                return;
            }else {
                System.out.println("CLIENT_SetExamRecordingPlans success");
            }
 
        }
    public void RunTest()
    {
        System.out.println("Run Test");
        CaseMenu menu = new CaseMenu();;
        menu.addItem((new CaseMenu.Item(this , "findTaskInfos" , "findTaskInfos")));
        menu.addItem((new CaseMenu.Item(this , "FindFileEx" , "FindFileEx")));
        menu.addItem((new CaseMenu.Item(this , "SetExamRecordingPlans" , "SetExamRecordingPlans")));
 
        menu.run();
    }
 
    public static void main(String[] args) {
        FindRecordBackupRestoreTaskInfosDemo findRecordBackupRestoreTaskInfosDemo=new FindRecordBackupRestoreTaskInfosDemo();
        InitTest("172.12.5.248",37777,"admin","admin123");
        findRecordBackupRestoreTaskInfosDemo.RunTest();
        LoginOut();
 
    }
}