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.structure.*; import com.netsdk.lib.structure.NET_TIME; import com.netsdk.lib.structure.NET_TIME_EX; import com.netsdk.lib.utils.Initialization; import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import static com.netsdk.lib.NetSDKLib.*; /** * @author 291189 * @version 1.0 * @description GIP220629025 * @date 2022/7/19 10:01 */ public class WireLessDevLowDemo extends Initialization { /** * 订阅 * @return */ public void startListen() { // 设置报警回调函数 netSdk.CLIENT_SetDVRMessCallBack(fAlarmDataCB.getCallBack(), null); // 订阅报警 boolean bRet = netSdk.CLIENT_StartListenEx(loginHandle); if (!bRet) { System.err.println("订阅报警失败! LastError = 0x%x\n" + netSdk.CLIENT_GetLastError()); } else { System.out.println("订阅报警成功."); } } /** * 取消订阅 * @return */ public void stopListen() { // 停止订阅报警 boolean bRet = netSdk.CLIENT_StopListen(loginHandle); if (bRet) { System.out.println("取消订阅报警信息."); } } /** * 报警信息回调函数原形,建议写成单例模式 */ private static class fAlarmDataCB implements NetSDKLib.fMessCallBack{ private fAlarmDataCB(){} private static class fAlarmDataCBHolder { private static fAlarmDataCB callback = new fAlarmDataCB(); } public static fAlarmDataCB getCallBack() { return fAlarmDataCB.fAlarmDataCBHolder.callback; } public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, Pointer dwUser){ // System.out.printf("command = %x\n", lCommand); switch (lCommand) { case NetSDKLib.NET_ALARM_AREAARM_MODECHANGE: { // 区域防区模式改变(对应结构体ALARM_AREAARM_MODECHANGE_INFO) System.out.println(" 区域防区模式改变"); ALARM_AREAARM_MODECHANGE_INFO msg = new ALARM_AREAARM_MODECHANGE_INFO(); ToolKits.GetPointerData(pStuEvent, msg); /** 区域编号 */ int nAreaIndex = msg.nAreaIndex; int nEventID = msg.nEventID; NET_TIME_EX utc = msg.UTC; int emTriggerMode = msg.emTriggerMode; int emUser = msg.emUser; int nID = msg.nID; System.out.println(" nAreaIndex:"+nAreaIndex); System.out.println(" nEventID:"+nEventID); System.out.println(" utc:"+utc); System.out.println(" emTriggerMode:"+emTriggerMode); System.out.println(" emUser:"+emUser); System.out.println(" nID:"+nID); break; } case NetSDKLib.NET_ALARM_ALARM_EX2: { // 本地报警事件(对应结构体ALARM_ALARM_INFO_EX2,对NET_ALARM_ALARM_EX升级) System.out.println(" 本地报警事件"); NetSDKLib.ALARM_ALARM_INFO_EX2 msg = new NetSDKLib.ALARM_ALARM_INFO_EX2(); ToolKits.GetPointerData(pStuEvent, msg); System.out.println("nChannelID" + msg.nChannelID); System.out.println("nAction" + msg.nAction); System.out.println("stuTime" + msg.stuTime.toStringTime()); System.out.println("emSenseType" + msg.emSenseType); System.out.println("emDefenceAreaType" + msg.emDefenceAreaType); System.out.println("nEventID" + msg.nEventID); System.out.println("szName" +new String(msg.szName) ); break; } case NetSDKLib.NET_ALARM_WIRELESSDEV_LOWPOWER:{ // 获取无线设备低电量上报事件(对应结构体ALARM_WIRELESSDEV_LOWPOWER_INFO) System.out.println(" 获取无线设备低电量上报事件"); ALARM_WIRELESSDEV_LOWPOWER_INFO msg=new ALARM_WIRELESSDEV_LOWPOWER_INFO(); ToolKits.GetPointerData(pStuEvent, msg); int emResult = msg.emResult; System.out.println(" emResult:"+emResult); NET_TIME stuTime = msg.stuTime; System.out.println(" stuTime:"+stuTime.toStringTime()); int emType = msg.emType; System.out.println(" emType:"+emType); break; } case NetSDKLib.NET_ALARM_MODULE_LOST:{ // 扩展模块掉线事件(对应结构体 ALARM_MODULE_LOST_INFO) System.out.println(" 扩展模块掉线事件"); NetSDKLib.ALARM_MODULE_LOST_INFO msg=new NetSDKLib.ALARM_MODULE_LOST_INFO(); ToolKits.GetPointerData(pStuEvent, msg); // 事件上报时间 NetSDKLib.NET_TIME stuTime=msg.stuTime; System.out.println(" stuTime:"+stuTime.toStringTime()); // 扩展模块接的总线的序号(从0开始) int nSequence = msg.nSequence; System.out.println(" nSequence:"+nSequence); // 总线类型, 参考枚举 NET_BUS_TYPE int emBusType = msg.emBusType; System.out.println(" emBusType:"+emBusType); // 掉线的扩展模块数目 int nAddr =msg.nAddr; System.out.println(" nAddr:"+nAddr); // 掉线的扩展模块的序号(从0开始) int[] anAddr = msg.anAddr; for(int i=0;i