From 0484a33f0550b344382f0d3caac5b26bbba23ca0 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 24 五月 2023 14:42:12 +0800
Subject: [PATCH] 增加按坐标控制云台ptz接口

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java |   48 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java
index 1b97cff..f1121bb 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/hikClientServiceImpl.java
@@ -9,16 +9,12 @@
 import com.ruoyi.device.camera.mapper.ArdCamerasMapper;
 import com.ruoyi.device.hiksdk.common.global.globalVariable;
 import com.ruoyi.device.camera.domain.ArdCameras;
-import com.ruoyi.device.camera.service.IArdCamerasService;
-import com.ruoyi.device.cameracalibration.domain.ArdCamerasCalibration;
 import com.ruoyi.device.hiksdk.domain.recordInfo;
-import com.ruoyi.device.cameracalibration.service.IArdCamerasCalibrationService;
+import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil;
 import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK;
 import com.ruoyi.device.hiksdk.service.hikClientService;
-import com.ruoyi.device.hiksdk.util.imageUtil.waterMarkUtil;
 import com.ruoyi.device.hiksdk.util.minioUtil.MinioUtil;
 import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.service.ISysUserService;
 import com.sun.jna.Native;
 import com.sun.jna.Platform;
 import com.sun.jna.Pointer;
@@ -29,11 +25,8 @@
 import sun.misc.BASE64Encoder;
 
 import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.math.BigDecimal;
-import java.net.URLEncoder;
 import java.nio.ByteBuffer;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
@@ -240,7 +233,7 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     @Override
-    @SdkOperate
+   // @SdkOperate
     public boolean PTZControlWithSpeed(CameraCmd cmd) {
         String cameraId = cmd.getCameraId();
         boolean enable = cmd.isEnable();
@@ -289,7 +282,6 @@
         }
         return bool;
     }
-
 
     /**
      * 璁剧疆鑱氱劍鍊�
@@ -595,6 +587,39 @@
         }
     }
 
+    @Override
+    public boolean setTargetPosition(CameraCmd cmd) {
+        String cameraId = cmd.getCameraId();
+        Integer channelNum = cmd.getChannelNum();
+        if (!globalVariable.loginMap.containsKey(cameraId)) {
+            return false;
+        }
+        Integer userId = globalVariable.loginMap.get(cameraId);
+        HCNetSDK.NET_DVR_PTZPOS m_ptzPosCurrent = new HCNetSDK.NET_DVR_PTZPOS();
+        m_ptzPosCurrent.wAction = 1;
+        try {
+            double[] cameraPositon = Arrays.stream(cmd.getCamPosition().split(",")).mapToDouble(Double::parseDouble).toArray();
+            double[] targetPositions = Arrays.stream(cmd.getTargetPosition().split(",")).mapToDouble(Double::parseDouble).toArray();
+            double[] cameraPTZ = GisUtil.getCameraPTZ(cameraPositon, targetPositions, 20, 150);
+            String p = String.valueOf((int) ( cameraPTZ[0] * 10));
+            String t = String.valueOf((int) ( cameraPTZ[1] * 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));
+            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
+            Pointer point = m_ptzPosCurrent.getPointer();
+            m_ptzPosCurrent.write();
+            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.info("璁剧疆ptz澶辫触,璇风◢鍚庨噸璇�" + code);
+            }
+            return bool;
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            return false;
+        }
+    }
     /**
      * @鎻忚堪 鎿嶆帶閿佸畾
      * @鍙傛暟 [userId, channelNum]
@@ -921,7 +946,8 @@
         if (enable) {
             struFocusMode.byFocusMode = 1;//鎵嬪姩鑱氱劍
         } else {
-            struFocusMode.byFocusMode = 0;//鑷姩鑱氱劍
+            struFocusMode.byAutoFocusMode=1;
+            struFocusMode.byFocusMode = 2;//鑷姩鑱氱劍
         }
         struFocusMode.byFocusDefinitionDisplay = 1;
         struFocusMode.byFocusSpeedLevel = 3;

--
Gitblit v1.9.3