| | |
| | | |
| | | import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; |
| | | import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits; |
| | | import com.sun.jna.Memory; |
| | | import com.sun.jna.Pointer; |
| | | import com.sun.jna.Structure; |
| | | import com.sun.jna.ptr.IntByReference; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | int nBufferLen = 2 * 1024 * 1024; |
| | | byte[] strBuffer = new byte[nBufferLen]; |
| | | |
| | | if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 3000)) { |
| | | if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 6000)) { |
| | | cmdObject.write(); |
| | | if (configsdk.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(), cmdObject.size(), null)) { |
| | | cmdObject.read(); |
| | |
| | | if (bRet) { |
| | | cmdObject.read(); |
| | | } else { |
| | | log.error("Get ["+strCmd+"] Config Failed!Last Error = " + getErrorCodePrint()); |
| | | log.error("Get [" + strCmd + "] Config Failed!Last Error = " + getErrorCodePrint()); |
| | | result = false; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static boolean queryCameraState(NetSDKLib.LLong hLoginHandle, Integer chanNum, Integer chanNo) { |
| | | boolean bRet = false; |
| | | try { |
| | | NetSDKLib.NET_CAMERA_STATE_INFO[] arrCameraStatus = new NetSDKLib.NET_CAMERA_STATE_INFO[chanNum]; |
| | | for (int i = 0; i < arrCameraStatus.length; i++) { |
| | | arrCameraStatus[i] = new NetSDKLib.NET_CAMERA_STATE_INFO(); |
| | | } |
| | | |
| | | // 入参 |
| | | NetSDKLib.NET_IN_GET_CAMERA_STATEINFO stIn = new NetSDKLib.NET_IN_GET_CAMERA_STATEINFO(); |
| | | stIn.bGetAllFlag = 0; // 全部 |
| | | stIn.nValidNum = chanNum; |
| | | stIn.nChannels[chanNo - 1] = chanNo - 1; |
| | | |
| | | // 出参 |
| | | NetSDKLib.NET_OUT_GET_CAMERA_STATEINFO stOut = new NetSDKLib.NET_OUT_GET_CAMERA_STATEINFO(); |
| | | stOut.nMaxNum = chanNum; |
| | | stOut.pCameraStateInfo = new Memory(arrCameraStatus[0].size() * chanNum); |
| | | stOut.pCameraStateInfo.clear(arrCameraStatus[0].size() * chanNum); |
| | | ToolKits.SetStructArrToPointerData(arrCameraStatus, stOut.pCameraStateInfo); // 将数组内存拷贝到Pointer |
| | | |
| | | stIn.write(); |
| | | stOut.write(); |
| | | |
| | | bRet = netsdk.CLIENT_QueryDevInfo(hLoginHandle, NetSDKLib.NET_QUERY_GET_CAMERA_STATE, |
| | | stIn.getPointer(), stOut.getPointer(), null, 3000); |
| | | if (bRet) { |
| | | stOut.read(); |
| | | ToolKits.GetPointerDataToStructArr(stOut.pCameraStateInfo, arrCameraStatus); // 将Pointer拷贝到数组内存 |
| | | final String[] connectionState = {"未知", "正在连接", "已连接", "未连接", "通道未配置,无信息", "通道有配置,但被禁用"}; |
| | | if (connectionState[arrCameraStatus[chanNo - 1].emConnectionState].equals("已连接")) { |
| | | log.debug("通道" + arrCameraStatus[chanNo - 1].nChannel + connectionState[arrCameraStatus[chanNo - 1].emConnectionState]); |
| | | bRet = true; |
| | | } else { |
| | | bRet = false; |
| | | } |
| | | } else { |
| | | log.error("Query Camera State Failed!" + getErrorCodePrint()); |
| | | } |
| | | } catch (Exception ex) { |
| | | log.error("Query Camera State Failed!" + ex.getMessage()); |
| | | } |
| | | return bRet; |
| | | } |
| | | |
| | | // 获取配置 |
| | | public static boolean GetConfig(NetSDKLib.LLong hLoginHandle, int nChn, int type, Structure cmdObject) { |
| | | boolean result = false; |