package com.netsdk.demo.customize; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Memory; import com.sun.jna.Pointer; import static com.netsdk.lib.NetSDKLib.*; /** * @author 291189 * @version 1.0 * @description ERR221010124 * @date 2022/11/2 14:09 */ public class IVSEventFindDemo extends Initialization { LLong findlLong =new LLong(0); int dwCount=0; //智能事件开始查询 public void IVSEventFind(){ NET_IN_IVSEVENT_FIND_INFO stIn=new NET_IN_IVSEVENT_FIND_INFO(); //设置 开始时间 stIn.stStartTime.dwYear = 2022; stIn.stStartTime.dwMonth = 11; stIn.stStartTime.dwDay = 2; stIn.stStartTime.dwHour = 8; stIn.stStartTime.dwMinute = 55; stIn.stStartTime.dwSecond = 0; //设置 结束时间 stIn.stEndTime.dwYear = 2022; stIn.stEndTime.dwMonth = 11; stIn.stEndTime.dwDay = 2; stIn.stEndTime.dwHour = 20; stIn.stEndTime.dwMinute = 0; stIn.stEndTime.dwSecond = 0; /** 报警诊断类型 0:全部 1:未处理 2:正确 3:错误 4:重复正确报警 5:重复错误报警 */ stIn.nVaild = 0; /** nChannelList中有效通道号个数,填0表示查询所有通道号 */ stIn.dwChannelCnt = 0; /** 通道号列表 */ stIn.nChannelList[0] = 0; stIn.dwEventCodeCnt = 4; stIn.dwEventCodeList[0] = EVENT_IVS_LEAVEDETECTION; stIn.dwEventCodeList[1] = EVENT_IVS_CONVEYER_BELT_NONLOAD; stIn.dwEventCodeList[2] = EVENT_IVS_CONVEYER_BELT_BULK; stIn.dwEventCodeList[3] = EVENT_IVS_CONVEYER_BELT_RUNOFF; Pointer stTnPointer = new Memory(stIn.size()); stTnPointer.clear(stIn.size()); ToolKits.SetStructDataToPointer(stIn,stTnPointer,0); NET_OUT_IVSEVENT_FIND_INFO stOut=new NET_OUT_IVSEVENT_FIND_INFO(); Pointer stOutPointer = new Memory(stOut.size()); stOutPointer.clear(stOut.size()); ToolKits.SetStructDataToPointer(stOut,stOutPointer,0); findlLong = netSdk.CLIENT_IVSEventFind(loginHandle, stTnPointer, stOutPointer, 3000); if (findlLong.longValue()==0) { System.out.println("CLIENT_IVSEventFind failed. error is " + ToolKits.getErrorCode()); return; }else { System.out.println("CLIENT_IVSEventFind Succeed"); } ToolKits.GetPointerData(stOutPointer,stOut); dwCount = stOut.dwCount; System.out.println("dwCount:"+dwCount); } /** * 智能事件信息查询 */ public void IVSEventNextFind(){ NET_IN_IVSEVENT_NEXTFIND_INFO stNextFindIn=new NET_IN_IVSEVENT_NEXTFIND_INFO(); /** 单次查询返回数量 */ int limit=5; stNextFindIn.nLimit = limit; /** 查询起点偏移 */ stNextFindIn.nStartIndex = 0; Pointer stTnPointer = new Memory(stNextFindIn.size()); stTnPointer.clear(stNextFindIn.size()); ToolKits.SetStructDataToPointer(stNextFindIn,stTnPointer,0); NET_OUT_IVSEVENT_NEXTFIND_INFO stNextFindOut=new NET_OUT_IVSEVENT_NEXTFIND_INFO(); /** pstuEventInfo的个数, 等于 NET_IN_IVSEVENT_NEXTFIND_INFO 的nLimit字段 */ stNextFindOut.dwEventCnt = limit; NET_IVSEVENT_EVENT_INFO[] infos=new NET_IVSEVENT_EVENT_INFO[limit]; for(int i=0;i