‘liusuyi’
2023-07-06 483f72f5540bdefb3ddd4726113b3c171eb7107d
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -2,11 +2,13 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.utils.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.hiksdk.util.minio.MinioUtils;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
@@ -124,7 +126,6 @@
     * @创建时间 2023/1/17 16:12
     * @修改人和其它信息
     */
    public static void login(ArdCameras camera) {
        // 初始化
        if (!hCNetSDK.NET_DVR_Init()) {
@@ -254,7 +255,7 @@
            HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
            m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
            // 智能交通布防优先级:0 - 一等级(高),1 - 二等级(中),2 - 三等级(低)
            m_strAlarmInfo.byLevel = 1;
            m_strAlarmInfo.byLevel = 2;
            // 智能交通报警信息上传类型:0 - 老报警信息(NET_DVR_PLATE_RESULT), 1 - 新报警信息(NET_ITS_PLATE_RESULT)
            m_strAlarmInfo.byAlarmInfoType = 1;
            // 布防类型(仅针对门禁主机、人证设备):0 - 客户端布防(会断网续传),1 - 实时布防(只上传实时数据)
@@ -263,7 +264,6 @@
            // 布防成功,返回布防成功的数据传输通道号
            lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
            if (lAlarmHandle == -1) {
                log.error("设备布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                log.error("设备布防失败,错误码==========》" + hCNetSDK.NET_DVR_GetLastError());
                // 注销 释放sdk资源
                logout(lUserID);
@@ -287,6 +287,7 @@
        // 释放sdk资源
        hCNetSDK.NET_DVR_Cleanup();
    }
    /**
     * 抓图
     *
@@ -344,4 +345,38 @@
            return "";
        }
    }
    /**
     * 获取防区名称
     * 通道号==防区号 从0开始
     * 刘苏义
     * 2023/7/6 10:48
     */
    public static String getDefenseZoneName(CameraCmd cmd) {
        String name="";
        try {
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getWZoneIndex();//通道号==防区号
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return name;
            }
            Integer userId = GlobalVariable.loginMap.get(cameraId);
            HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
            Pointer point = netDvrAlarminParam.getPointer();
            IntByReference ibrBytesReturned = new IntByReference();
            netDvrAlarminParam.write();
            boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
            if (b) {
                netDvrAlarminParam.read();
                name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
            } else {
                int error = hCNetSDK.NET_DVR_GetLastError();
                log.info("获取防区名称失败:" + error);
            }
        } catch (Exception ex) {
            log.error("获取防区名称异常:" + ex.getMessage());
        }
        return name;
    }
}