package com.netsdk.demo.customize.securityCheck; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.callback.securityCheck.SecurityGateAttachAlarmStatisticsCallBack; import com.netsdk.lib.structure.NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS; import com.netsdk.lib.structure.NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS; import com.sun.jna.Memory; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import java.io.File; import java.util.UUID; import static com.netsdk.lib.Utils.getOsPrefix; /** * @author 291189 * @version 1.0 * @description 安全门报警订阅和统计信息 * @date 2021/6/29 */ public class ShSecurityCheckDemo { /** 10.35.232.160 安检门环境 admin admin123 安检机 10.35.233.144 admin admin123 */ // 配置登陆地址,端口,用户名,密码 private String m_strIp = "10.35.232.160"; private int m_nPort = 37777; private String m_strUser = "admin"; private String m_strPassword = "admin123"; static NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE; static NetSDKLib configApi = NetSDKLib.CONFIG_INSTANCE; // public static final NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE; // 登陆句柄 private static NetSDKLib.LLong loginHandle = new NetSDKLib.LLong(0); // 订阅句柄 private static NetSDKLib.LLong AttachHandle = new NetSDKLib.LLong(0); // 设备信息扩展 private NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); /** * 设备断线回调 */ private static class DisconnectCallback implements NetSDKLib.fDisConnect { private static ShSecurityCheckDemo.DisconnectCallback instance = new ShSecurityCheckDemo.DisconnectCallback(); private DisconnectCallback() { } public static ShSecurityCheckDemo.DisconnectCallback getInstance() { return instance; } public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("Device[%s:%d] Disconnect!\n", pchDVRIP, nDVRPort); } } /** * 设备重连回调 */ private static class HaveReconnectCallback implements NetSDKLib.fHaveReConnect { private static ShSecurityCheckDemo.HaveReconnectCallback instance = new ShSecurityCheckDemo.HaveReconnectCallback(); private HaveReconnectCallback() { } public static ShSecurityCheckDemo.HaveReconnectCallback getInstance() { return instance; } public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) { System.out.printf("Device[%s:%d] HaveReconnected!\n", pchDVRIP, nDVRPort); } } public void InitTest(){ // 初始化SDK库 netSdk.CLIENT_Init(ShSecurityCheckDemo.DisconnectCallback.getInstance(), null); // 设置断线重连成功回调函数 netSdk.CLIENT_SetAutoReconnect(ShSecurityCheckDemo.HaveReconnectCallback.getInstance(), null); //打开日志,可选0 NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO(); String logPath = new File(".").getAbsoluteFile().getParent() + File.separator + "sdk_log" + File.separator + "sdk.log"; setLog.bSetFilePath = 1; System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length); setLog.bSetPrintStrategy = 1; setLog.nPrintStrategy = 0; if (!netSdk.CLIENT_LogOpen(setLog)){ System.err.println("Open SDK Log Failed!!!"); } Login(); } public void Login(){ // 登陆设备 int nSpecCap = NetSDKLib.EM_LOGIN_SPAC_CAP_TYPE.EM_LOGIN_SPEC_CAP_TCP; // TCP登入 IntByReference nError = new IntByReference(0); loginHandle = netSdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword ,nSpecCap, null, deviceInfo, nError); if (loginHandle.longValue() != 0) { System.out.printf("Login Device[%s] Success!\n", m_strIp); } else { System.err.printf("Login Device[%s] Fail.Error[%s]\n", m_strIp, ToolKits.getErrorCode()); LoginOut(); } } public void LoginOut(){ System.out.println("End Test"); if( loginHandle.longValue() != 0) { netSdk.CLIENT_Logout(loginHandle); } System.out.println("See You..."); netSdk.CLIENT_Cleanup(); System.exit(0); } // 编码格式 public static String encode; static { String osPrefix = getOsPrefix(); if (osPrefix.toLowerCase().startsWith("win64-amd64")) { encode = "GBK"; } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) { encode = "UTF-8"; } } /** * 订阅安全门报警统计信息接口 */ public void attachDadarAlarmInfo() { //入参 NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS net_in_securitygate_attach_alarm_statistics=new NET_IN_SECURITYGATE_ATTACH_ALARM_STATISTICS(); UUID uuid= UUID.randomUUID(); byte[] szUUID = net_in_securitygate_attach_alarm_statistics.szUUID; String numbers =uuid.toString(); //beda31a3-a7b5-4126-81b9-6e67402b7b0c? int i = numbers.lastIndexOf("-"); String[] split = numbers.split("-"); //UUID算法(8-4-4-16格式) numbers=split[0]+"-"+split[1]+""+split[2]+"-"+split[3]+split[4]; System.arraycopy(numbers.getBytes(), 0, szUUID, 0, numbers.getBytes().length); net_in_securitygate_attach_alarm_statistics.szUUID=szUUID; Pointer user=new Memory(1024); net_in_securitygate_attach_alarm_statistics.dwUser=user; net_in_securitygate_attach_alarm_statistics.cbNotify= SecurityGateAttachAlarmStatisticsCallBack.getInstance(); Pointer pInParam=new Memory(net_in_securitygate_attach_alarm_statistics.size()); ToolKits.SetStructDataToPointer(net_in_securitygate_attach_alarm_statistics, pInParam, 0); //出参 NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS net_out_securitygate_attach_alarm_statistics= new NET_OUT_SECURITYGATE_ATTACH_ALARM_STATISTICS(); Pointer pOutParam=new Memory(net_out_securitygate_attach_alarm_statistics.size()); ToolKits.SetStructDataToPointer(net_out_securitygate_attach_alarm_statistics, pOutParam, 0); AttachHandle = netSdk.CLIENT_SecurityGateAttachAlarmStatistics(loginHandle, pInParam, pOutParam, 5000); if(AttachHandle.longValue() == 0) { System.out.printf("SecurityGateAttachAlarmStatistics fail, ErrCode=%x\n", netSdk.CLIENT_GetLastError() ); }else { System.out.println("SecurityGateAttachAlarmStatistics success"); } } public void RunTest() { System.out.println("Run Test"); CaseMenu menu = new CaseMenu(); menu.addItem(new CaseMenu.Item(this , "attachDadarAlarmInfo" , "attachDadarAlarmInfo")); menu.run(); } public static void main(String[] args){ ShSecurityCheckDemo shSecurityCheckDemo=new ShSecurityCheckDemo(); shSecurityCheckDemo.InitTest(); shSecurityCheckDemo.RunTest(); shSecurityCheckDemo.LoginOut(); } }