‘liusuyi’
2023-07-07 9aa66699aaa610be66f5bd0c22e90cae114311f9
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -2,8 +2,10 @@
import com.ard.alarm.camera.domain.ArdCameras;
import com.ard.alarm.camera.domain.CameraCmd;
import com.ard.alarm.external.domain.ArdEquipExternal;
import com.ard.utils.ByteUtils;
import com.ard.utils.hiksdk.common.GlobalVariable;
import com.ard.utils.hiksdk.domain.DeviceInfo;
import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
import com.ard.utils.hiksdk.util.minio.MinioUtils;
import com.sun.jna.Native;
@@ -11,12 +13,13 @@
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.*;
import static com.ard.utils.hiksdk.common.GlobalVariable.cameraMap;
/**
@@ -126,7 +129,7 @@
     * @创建时间 2023/1/17 16:12
     * @修改人和其它信息
     */
    public static void login(ArdCameras camera) {
    public static void login(DeviceInfo deviceInfo) {
        // 初始化
        if (!hCNetSDK.NET_DVR_Init()) {
            log.error("SDK初始化失败");
@@ -138,10 +141,10 @@
        } else {
            hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
        }
        String m_sDeviceIP = camera.getIp();
        String m_sUsername = camera.getUsername();
        String m_sPassword = camera.getPassword();
        short m_sPort = camera.getPort().shortValue();
        String m_sDeviceIP = deviceInfo.getIp();
        String m_sUsername = deviceInfo.getUsername();
        String m_sPassword = deviceInfo.getPassword();
        short m_sPort = deviceInfo.getPort().shortValue();
        //设置连接时间与重连时间
        hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
        hCNetSDK.NET_DVR_SetReconnect(100000, true);
@@ -162,7 +165,7 @@
        //是否异步登录:0- 否,1- 是  windowsSDK里是true和false
        m_strLoginInfo.bUseAsynLogin = true;
        //异步登录回调
        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(camera);
        m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
        m_strLoginInfo.write();
        int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (i < 0) {
@@ -170,7 +173,6 @@
            log.info("登录异常:" + errorCode);
        }
    }
    /**
     * @描述 登录所有相机
     * @参数 []
@@ -179,18 +181,48 @@
     * @创建时间 2023/2/3 10:10
     * @修改人和其它信息
     */
    public static void loginAll(List<ArdCameras> ardCameras) {
    public static void loginAllCamera(List<ArdCameras> ardCameras) {
        try {
            log.debug("加载lib完成!");
            for (ArdCameras camera : ardCameras) {
                Thread.sleep(100);
                login(camera);
                DeviceInfo info=new DeviceInfo();
                info.setDeviceId(camera.getId());
                info.setIp(camera.getIp());
                info.setPort(camera.getPort());
                info.setUsername(camera.getUsername());
                info.setPassword(camera.getPassword());
                login(info);
                String ip = camera.getIp();
                cameraMap.put(ip, camera);
                GlobalVariable.cameraMap.put(ip, camera);
            }
        } catch (Exception ex) {
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    /**
     * @描述 登录所有报警主机
     * @参数 []
     * @返回值 void
     * @创建人 刘苏义
     * @创建时间 2023/2/3 10:10
     * @修改人和其它信息
     */
    public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
        try {
            for (ArdEquipExternal alarmHost : ardEquipExternals) {
                Thread.sleep(100);
                DeviceInfo info=new DeviceInfo();
                info.setDeviceId(alarmHost.getId());
                info.setIp(alarmHost.getIp());
                info.setPort(alarmHost.getPort());
                info.setUsername(alarmHost.getUsername());
                info.setPassword(alarmHost.getPassword());
                login(info);
                String ip = alarmHost.getIp();
                GlobalVariable.alarmHostMap.put(ip, alarmHost);
            }
        } catch (Exception ex) {
            log.error("初始化报警主机异常:" + ex.getMessage());
        }
    }
@@ -269,7 +301,7 @@
                logout(lUserID);
                return lAlarmHandle;
            } else {
                log.info("相机布防成功");
                log.info("设备布防成功");
                return lAlarmHandle;
            }
        }
@@ -379,4 +411,6 @@
        }
        return name;
    }
}