‘liusuyi’
2023-12-13 a0d9d5ccd33aa09b4624fdfd2dd3269a9b82ba83
增加海康sdk设置高精度ptz信息
已修改2个文件
66 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/lib/HCNetSDK.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/lib/HCNetSDK.java
@@ -538,6 +538,7 @@
    public static final int NET_DVR_GET_PTZSCOPE = 294;//云台获取PTZ范围
    public static final int NET_DVR_SET_BASICPARAMCFG = 3271;//设置PTZ基本参数信息
    public static final int NET_DVR_COMPLETE_RESTORE_CTRL = 3420;    //设置完全恢复出厂值
    public static final int NET_DVR_SET_PTZABSOLUTEEX = 6697;//设置高精度PTZ绝对位置配置
    /***************************
     * DS9000新增命令(_V30) begin
     *****************************/
ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -930,8 +930,8 @@
     * @创建时间 2023/1/17 16:36
     * @修改人和其它信息 注意俯仰角度负值需要加上360得到的正值进行设置
     */
    @Override
    public boolean setPtz(CameraCmd cmd) {
    public boolean setPtz1(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChanNo();
        Map<String, Double> ptz = cmd.getPtzMap();
@@ -953,7 +953,7 @@
            boolean bool = hCNetSDK.NET_DVR_SetDVRConfig(userId, NET_DVR_SET_PTZPOS, channelNum, point, m_ptzPosCurrent.size());
            if (!bool) {
                int code = hCNetSDK.NET_DVR_GetLastError();
                log.error("设置ptz失败,请稍后重试" + code);
                log.error("设置PTZ参数失败,请稍后重试:" + code);
            }
            return bool;
        } catch (Exception ex) {
@@ -962,6 +962,65 @@
        }
    }
    /**
     * @描述 设置高精度ptz信息
     * @参数 [userId, channelNum]
     * @返回值 boolean
     * @创建人 刘苏义
     * @创建时间 2023/1/17 16:36
     * @修改人和其它信息 注意俯仰角度负值向下负值
     */
    @Override
    public boolean setPtz(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            Integer chanNo = cmd.getChanNo();
            Map<String, Double> ptz = cmd.getPtzMap();
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return false;
            }
            Integer lUserID = (Integer) GlobalVariable.loginMap.get(cameraId);
            IntByReference pchannel = new IntByReference(chanNo);
            Pointer pChannelNum = pchannel.getPointer();
            HCNetSDK.NET_DVR_STD_CONFIG lpConfigParam6697 = new HCNetSDK.NET_DVR_STD_CONFIG();
            HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG lpPTZAbsoluteEX_cfgInfo = new HCNetSDK.NET_DVR_PTZABSOLUTEEX_CFG();
            lpConfigParam6697.lpCondBuffer = pChannelNum;
            lpConfigParam6697.dwCondSize = 4;
            HCNetSDK.BYTE_ARRAY m_szStatusBuf = new HCNetSDK.BYTE_ARRAY(4096 * 4);
            lpConfigParam6697.lpStatusBuffer = m_szStatusBuf.getPointer();
            lpConfigParam6697.dwStatusSize = 4096 * 4;
            lpPTZAbsoluteEX_cfgInfo.dwSize = lpPTZAbsoluteEX_cfgInfo.size();
            lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fPan = new Double(ptz.get("p")).floatValue();
            float t = new Double(ptz.get("t")).floatValue();
            float t1 = t > 300 ? (t - 360) : t;
            BigDecimal bigDecimal = new BigDecimal(t1);
            float t2 = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
            lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fTilt = t2;
            lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.fZoom = new Double(ptz.get("z")).floatValue();
            lpPTZAbsoluteEX_cfgInfo.struPTZCtrl.dwFocus = 399;
            lpPTZAbsoluteEX_cfgInfo.dwFocalLen = 1250;
            lpPTZAbsoluteEX_cfgInfo.fHorizontalSpeed = (float) 10;
            lpPTZAbsoluteEX_cfgInfo.fVerticalSpeed = (float) 10;
            lpPTZAbsoluteEX_cfgInfo.byZoomType = 0;
            lpPTZAbsoluteEX_cfgInfo.write();
            lpConfigParam6697.lpInBuffer = lpPTZAbsoluteEX_cfgInfo.getPointer();
            lpConfigParam6697.dwInSize = lpPTZAbsoluteEX_cfgInfo.dwSize;
            lpConfigParam6697.write();
            boolean bool = hCNetSDK.NET_DVR_SetSTDConfig(lUserID, NET_DVR_SET_PTZABSOLUTEEX, lpConfigParam6697);
            if (!bool) {
                int code = hCNetSDK.NET_DVR_GetLastError();
                log.error("设置高精度PTZ参数失败,请稍后重试:" + code);
            }
            return bool;
        }catch (Exception ex)
        {
            log.error("设置高精度PTZ参数异常",ex);
            return false;
        }
    }
    @Override
    public boolean guideTargetPosition(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();