package com.ruoyi.device.dhsdk.module; import com.ruoyi.device.dhsdk.lib.NetSDKLib; import com.ruoyi.device.dhsdk.lib.ToolKits; import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; /** * @Description: * @ClassName: ConfigModule * @Author: 刘苏义 * @Date: 2023年10月14日14:57:01 **/ @Slf4j(topic = "dhSdk") public class ConfigModule { public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; public static NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE; /** * 查询设备状态 */ public static boolean queryDevState(NetSDKLib.LLong hLoginHandle, int nType, NetSDKLib.SdkStructure stuInfo) { IntByReference intRetLen = new IntByReference(); stuInfo.write(); if (!netsdk.CLIENT_QueryDevState(hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) { return false; } stuInfo.read(); return true; } /** * 查询远程设备状态 */ public static boolean queryRemotDevState(NetSDKLib.LLong hLoginHandle, int nChn, int nType, NetSDKLib.SdkStructure stuInfo) { IntByReference intRetLen = new IntByReference(); stuInfo.write(); if (!netsdk.CLIENT_QueryRemotDevState(hLoginHandle, nType, nChn, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) { log.error("Config Failed!" + ToolKits.getErrorCodePrint()); return false; } stuInfo.read(); return true; } /** * 获取单个配置 * * @param hLoginHandle 登陆句柄 * @param nChn 通道号,-1 表示全通道 * @param strCmd 配置名称 * @param cmdObject 配置对应的结构体对象 * @return 成功返回 true */ public static boolean GetNewDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { boolean result = false; IntByReference error = new IntByReference(0); int nBufferLen = 2 * 1024 * 1024; byte[] strBuffer = new byte[nBufferLen]; if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 3000)) { cmdObject.write(); if (configsdk.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(), cmdObject.size(), null)) { cmdObject.read(); result = true; } else { log.error("Parse [" + strCmd + "] Config Failed!" + ToolKits.getErrorCodePrint()); result = false; } } else { log.error("Get [" + strCmd + "] Config Failed!Last Error = " + getErrorCodePrint()); result = false; } return result; } public static boolean GetDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { boolean result = true; IntByReference error = new IntByReference(0); int nBufferLen = 2 * 1024 * 1024; byte[] strBuffer = new byte[nBufferLen]; cmdObject.write(); boolean bRet = netsdk.CLIENT_QueryNewSystemInfo(hLoginHandle, strCmd, nChn, strBuffer, cmdObject.size(), error, 3000); if (bRet) { cmdObject.read(); } else { log.error("Get ["+strCmd+"] Config Failed!Last Error = " + getErrorCodePrint()); result = false; } return result; } // 获取配置 public static boolean GetConfig(NetSDKLib.LLong hLoginHandle, int nChn, int type, Structure cmdObject) { boolean result = false; // 获取 cmdObject.write(); if (netsdk.CLIENT_GetConfig(hLoginHandle, type, nChn, cmdObject.getPointer(), cmdObject.size(), 4000, null)) { cmdObject.read(); result = true; } else { log.error("GetConfig Failed!" + getErrorCodePrint()); result = false; } return result; } /** * 设置单个配置 * * @param hLoginHandle 登陆句柄 * @param nChn 通道号,-1 表示全通道 * @param strCmd 配置名称 * @param cmdObject 配置对应的结构体对象 * @return 成功返回 true */ public static boolean SetDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { boolean result = false; int nBufferLen = 2 * 1024 * 1024; byte szBuffer[] = new byte[nBufferLen]; for (int i = 0; i < nBufferLen; i++) szBuffer[i] = 0; IntByReference error = new IntByReference(0); IntByReference restart = new IntByReference(0); cmdObject.write(); if (configsdk.CLIENT_PacketData(strCmd, cmdObject.getPointer(), cmdObject.size(), szBuffer, nBufferLen)) { cmdObject.read(); if (netsdk.CLIENT_SetNewDevConfig(hLoginHandle, strCmd, nChn, szBuffer, nBufferLen, error, restart, 3000)) { result = true; } else { log.error("Set [" + strCmd + "] Config Failed! Last Error = " + getErrorCodePrint()); result = false; } } else { log.error("Parse [" + strCmd + "] Config Failed!" + ToolKits.getErrorCodePrint()); result = false; } return result; } }