| | |
| | | import com.ruoyi.device.camera.factory.CameraSDK; |
| | | import com.ruoyi.device.camera.domain.ArdCameras; |
| | | import com.ruoyi.device.camera.domain.CameraCmd; |
| | | import com.ruoyi.device.camera.service.ICameraSdkService; |
| | | import com.ruoyi.device.channel.domain.ArdChannel; |
| | | import com.ruoyi.device.channel.service.IArdChannelService; |
| | | import com.ruoyi.device.terrain.domain.ArdTerrainMark; |
| | | import com.ruoyi.device.terrain.service.IArdTerrainMarkService; |
| | | import com.ruoyi.media.domain.Vtdu; |
| | | import com.ruoyi.media.service.IVtduService; |
| | | import com.ruoyi.utils.gis.GisUtil; |
| | |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.PriorityBlockingQueue; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.*; |
| | | import static com.ruoyi.utils.sdk.hiksdk.lib.HCNetSDK.NET_DVR_GET_GISINFO; |
| | |
| | | private IVtduService vtduService; |
| | | @Resource |
| | | private QueueHandler queueHandler; |
| | | |
| | | @Resource |
| | | ICameraSdkService cameraSdkService; |
| | | public Object _lock = new Object(); |
| | | public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; |
| | | private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//异常回调 |
| | |
| | | String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); |
| | | } else { |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog" , true); |
| | | } |
| | | String m_sDeviceIP = camera.getIp(); |
| | | String m_sUsername = camera.getUsername(); |
| | |
| | | createGuideQueue(camera); |
| | | return AjaxResult.success("设备登录成功"); |
| | | } catch (Exception ex) { |
| | | log.error("设备登录异常", ex); |
| | | log.error("设备登录异常" , ex); |
| | | return AjaxResult.error("设备登录异常" + ex.getMessage()); |
| | | } |
| | | } |
| | |
| | | String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); |
| | | } else { |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); |
| | | hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog" , true); |
| | | } |
| | | String m_sDeviceIP = camera.getIp(); |
| | | String m_sUsername = camera.getUsername(); |
| | |
| | | createGuideQueue(camera); |
| | | return AjaxResult.success("设备登录成功"); |
| | | } catch (Exception ex) { |
| | | log.error("注册设备异常", ex); |
| | | log.error("注册设备异常" , ex); |
| | | return AjaxResult.error("注册设备异常" + ex.getMessage()); |
| | | } |
| | | } |
| | |
| | | nFrameRate = "未知"; |
| | | break; |
| | | } |
| | | map.put("resolution", resolution);//分辨率 |
| | | map.put("videoBitrate", videoBitrate);//比特率 |
| | | map.put("videoEncType", videoEncType);//编码 |
| | | map.put("nFrameRate", nFrameRate);//帧率 |
| | | map.put("resolution" , resolution);//分辨率 |
| | | map.put("videoBitrate" , videoBitrate);//比特率 |
| | | map.put("videoEncType" , videoEncType);//编码 |
| | | map.put("nFrameRate" , nFrameRate);//帧率 |
| | | |
| | | } else { |
| | | int code = hCNetSDK.NET_DVR_GetLastError(); |
| | |
| | | double z = d.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | //log.debug("T垂直参数为: " + p + "P水平参数为: " + t + "Z变倍参数为: " + z); |
| | | Map<String, Object> ptzMap = new HashMap<>(); |
| | | ptzMap.put("p", p); |
| | | ptzMap.put("t", t); |
| | | ptzMap.put("z", z); |
| | | ptzMap.put("p" , p); |
| | | ptzMap.put("t" , t); |
| | | ptzMap.put("z" , z); |
| | | return AjaxResult.success(ptzMap); |
| | | } |
| | | |
| | |
| | | float fTilt = lpPTZAbsoluteEX_cfg.struPTZCtrl.fTilt; |
| | | float t = fTilt < 0 ? fTilt + 360 : fTilt; |
| | | float z = lpPTZAbsoluteEX_cfg.struPTZCtrl.fZoom; |
| | | ptzMap.put("p", p); |
| | | ptzMap.put("t", t); |
| | | ptzMap.put("z", z); |
| | | ptzMap.put("p" , p); |
| | | ptzMap.put("t" , t); |
| | | ptzMap.put("z" , z); |
| | | return AjaxResult.success(ptzMap); |
| | | } catch (Exception ex) { |
| | | log.error("获取高精度PTZ绝对位置异常:" + ex.getMessage()); |
| | |
| | | return AjaxResult.success("设置高精度PTZ参数成功"); |
| | | |
| | | } catch (Exception ex) { |
| | | log.error("设置高精度PTZ参数异常", ex); |
| | | log.error("设置高精度PTZ参数异常" , ex); |
| | | return AjaxResult.error("设置高精度PTZ参数异常:" + ex); |
| | | } |
| | | } |
| | |
| | | double[] targetPositions = cmd.getTargetPosition(); |
| | | double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150); |
| | | String p = String.valueOf((int) (cameraPTZ[0] * 10)); |
| | | String t = String.valueOf((int) (cameraPTZ[1] * 10)); |
| | | //修正俯仰 |
| | | double correctPitch = cameraSdkService.correctPitch(cmd); |
| | | double newt = cameraPTZ[1] + correctPitch; |
| | | String t = String.valueOf((int) (newt * 10)); |
| | | String z = String.valueOf((int) (cameraPTZ[2] * 10)); |
| | | m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16)); |
| | | m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16)); |
| | |
| | | String wZoomPosMax = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMax)) / 10); |
| | | String wZoomPosMin = df.format((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPosMin)) / 10); |
| | | Map<String, Object> ptzScopeMap = new HashMap<>(); |
| | | ptzScopeMap.put("pMax", wPanPosMax); |
| | | ptzScopeMap.put("pMin", wPanPosMin); |
| | | ptzScopeMap.put("tMax", wTiltPosMax); |
| | | ptzScopeMap.put("tMin", wTiltPosMin); |
| | | ptzScopeMap.put("zMax", wZoomPosMax); |
| | | ptzScopeMap.put("zMin", wZoomPosMin); |
| | | ptzScopeMap.put("pMax" , wPanPosMax); |
| | | ptzScopeMap.put("pMin" , wPanPosMin); |
| | | ptzScopeMap.put("tMax" , wTiltPosMax); |
| | | ptzScopeMap.put("tMin" , wTiltPosMin); |
| | | ptzScopeMap.put("zMax" , wZoomPosMax); |
| | | ptzScopeMap.put("zMin" , wZoomPosMin); |
| | | return AjaxResult.success(ptzScopeMap); |
| | | } |
| | | } |
| | |
| | | boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_CCDPARAMCFG, chanNo, point, struDayNigh.size()); |
| | | if (!bool) { |
| | | int code = hCNetSDK.NET_DVR_GetLastError(); |
| | | log.error("切换红外失败 ErrorCode:{},ErrorInfo:{}", code, SdkErrorCodeEnum.getDescByCode(code)); |
| | | log.error("切换红外失败 ErrorCode:{},ErrorInfo:{}" , code, SdkErrorCodeEnum.getDescByCode(code)); |
| | | return AjaxResult.warn("切换红外失败:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")"); |
| | | } |
| | | log.debug("切换红外成功"); |
| | |
| | | Pointer pStrPicCfg = strPicCfg.getPointer(); |
| | | NativeLong lChannel = new NativeLong(chanNo); |
| | | IntByReference pInt = new IntByReference(0); |
| | | boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), |
| | | pStrPicCfg, strPicCfg.size(), pInt); |
| | | boolean b_GetPicCfg = hCNetSDK.NET_DVR_GetDVRConfig(camera.getLoginId(), HCNetSDK.NET_DVR_GET_PICCFG_V40, lChannel.intValue(), pStrPicCfg, strPicCfg.size(), pInt); |
| | | if (!b_GetPicCfg) { |
| | | // log.error("获取图像参数失败,错误码:" + hCNetSDK.NET_DVR_GetLastError()); |
| | | } |
| | |
| | | } |
| | | struGisInfo.read(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("p", struGisInfo.struPtzPos.fPanPos); |
| | | map.put("t", struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos); |
| | | map.put("z", struGisInfo.struPtzPos.fZoomPos); |
| | | map.put("fHorFieldAngle", struGisInfo.fHorizontalValue);// 水平视场角 |
| | | map.put("fVerFieldAngle", struGisInfo.fVerticalValue);// 垂直视场角 |
| | | map.put("p" , struGisInfo.struPtzPos.fPanPos); |
| | | map.put("t" , struGisInfo.struPtzPos.fTiltPos < 0 ? struGisInfo.struPtzPos.fTiltPos + 360 : struGisInfo.struPtzPos.fTiltPos); |
| | | map.put("z" , struGisInfo.struPtzPos.fZoomPos); |
| | | map.put("fHorFieldAngle" , struGisInfo.fHorizontalValue);// 水平视场角 |
| | | map.put("fVerFieldAngle" , struGisInfo.fVerticalValue);// 垂直视场角 |
| | | return AjaxResult.success(map); |
| | | |
| | | } |
| | |
| | | return AjaxResult.warn("本地录像取流失败:" + SdkErrorCodeEnum.getDescByCode(code) + "(" + code + ")"); |
| | | } |
| | | log.debug("本地录像开始"); |
| | | return AjaxResult.success("录像开始", lRealHandle); |
| | | return AjaxResult.success("录像开始" , lRealHandle); |
| | | } catch (Exception ex) { |
| | | log.error("本地录像开始异常" + ex.getMessage()); |
| | | return AjaxResult.error("本地录像开始异常" + ex.getMessage()); |