抓图计划NET_DVR_GET_SCHED_CAPTURECFG,HCNetSDK.java缺少,需要自行构造
需要注意的是SDK中的二维数组的构造
public static final int NET_DVR_GET_SCHED_CAPTURECFG = 1282; // 获取抓图计划
public static final int NET_DVR_SET_SCHED_CAPTURECFG = 1283; // 设置抓图计划
public static class NET_DVR_SCHED_CAPTURECFG extends Structure { // 通道录像参数配置(9000扩展)
public int dwSize;
public byte byEnable;
public byte[] byRes1 = new byte[3];
public NET_DVR_CAPTURE_DAY[] struCaptureDay = new NET_DVR_CAPTURE_DAY[MAX_DAYS];
public tempStructure[] tempStructure = new tempStructure[MAX_DAYS];
public NET_DVR_CAPTURE_DAY struCaptureHoliday = new NET_DVR_CAPTURE_DAY();
public NET_DVR_CAPTURE_SCHED[] struHolidaySched = new NET_DVR_CAPTURE_SCHED[MAX_TIMESEGMENT_V30];
public int dwRecorderDuration;
public int dwDelayTime;
public byte[] byRes = new byte[36];
}
public static class tempStructure extends Structure{
public NET_DVR_CAPTURE_SCHED[] struCaptureSched = new NET_DVR_CAPTURE_SCHED[MAX_TIMESEGMENT_V30];
}
public static class NET_DVR_CAPTURE_DAY extends Structure { // 全天录像参数配置(子结构)
public byte byAllDayCapture; // 是否全天抓图
public byte byCaptureType; //抓图类型:0-定时抓图,1-移动侦测抓图,2-报警抓图,3-移动侦测或报警抓图,4-移动侦测和报警抓图,6-智能报警抓图,7-智能侦测抓图,8-全部事件,39-离线测温抓图
public byte[] byRes = new byte[2];
}
public static class NET_DVR_CAPTURE_SCHED extends Structure { // 全天录像参数配置(子结构)
public NET_DVR_SCHEDTIME struCaptureTime = new NET_DVR_SCHEDTIME(); //抓图时间段
public byte byCaptureType; //抓图类型:0-定时抓图,1-移动侦测抓图,2-报警抓图,3-移动侦测或报警抓图,4-移动侦测和报警抓图,6-智能报警抓图,7-智能侦测抓图,8-全部事件,39-离线测温抓图
public byte[] byRes = new byte[3];
}
public static class NET_DVR_SCHEDTIME extends Structure {
public byte byStartHour; // 开始时间
public byte byStartMin;
public byte byStopHour; // 结束时间
public byte byStopMin;
}
测试,必要代码
public static void getAndSetSchedCaptureCfg() {
IntByReference ibrBytesReturned = new IntByReference(0);// 获取IP接入配置参数
NET_DVR_SCHED_CAPTURECFG userCfg = new NET_DVR_SCHED_CAPTURECFG();
userCfg.write();
Pointer lpIpParaConfig = userCfg.getPointer();
boolean flag = hCNetSDK.NET_DVR_GetDVRConfig(lUserID, HCNetSDK.NET_DVR_GET_SCHED_CAPTURECFG, new NativeLong(1),
lpIpParaConfig, userCfg.size(), ibrBytesReturned);
userCfg.read();
if (!flag) {
System.out.println("获取抓图计划失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
return;
}
for(int i=0;i<7;i++) {
System.out.println("是否全天抓图:"+YesOrNoEnum.getNameByCode(Integer.valueOf(userCfg.struCaptureDay[i].byAllDayCapture)));
System.out.println("抓图类型:"+CaptureTypeEnum.getNameByCode(userCfg.struCaptureDay[i].byCaptureType));
NET_DVR_SCHEDTIME struRecordTime = userCfg.tempStructure[i].struCaptureSched[0].struCaptureTime;
System.out.println(struRecordTime.byStartHour+":"+struRecordTime.byStartMin+"-"+struRecordTime.byStopHour+":"+struRecordTime.byStopMin);
}
// 配置每天全天
for(int i=0;i<7;i++) {
userCfg.struCaptureDay[i].byAllDayCapture = 1;
userCfg.tempStructure[i].struCaptureSched[0].struCaptureTime.byStartHour=0;
userCfg.tempStructure[i].struCaptureSched[0].struCaptureTime.byStartMin=0;
userCfg.tempStructure[i].struCaptureSched[0].struCaptureTime.byStopHour=24;
userCfg.tempStructure[i].struCaptureSched[0].struCaptureTime.byStopMin=0;
}
userCfg.byEnable = 1;
userCfg.write();
flag = hCNetSDK.NET_DVR_SetDVRConfig(lUserID, HCNetSDK.NET_DVR_SET_SCHED_CAPTURECFG, new NativeLong(1),
lpIpParaConfig, userCfg.size());
if (flag == false) {
System.out.println("设置抓图计划失败,错误码为" + hCNetSDK.NET_DVR_GetLastError());
} else {
System.out.println("设置抓图计划成功");
}
}