Commit ad85ce29 authored by zhangyanduan's avatar zhangyanduan

add: 添加大华SDK相关代码

parent b38f1fb3
package org.rcisoft;
import org.rcisoft.integration.video.config.DaHuaVideoInitConfig;
import org.rcisoft.integration.video.config.DisConnect;
import org.rcisoft.integration.video.config.HaveReConnect;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
......@@ -19,6 +22,10 @@ public class EntranceApiApplication {
public static void main(String[] args) {
SpringApplication.run(EntranceApiApplication.class, args);
//此处需要初始化大华SDK
DisConnect connect = new DisConnect();
HaveReConnect reConnect = new HaveReConnect();
DaHuaVideoInitConfig.init(connect,reConnect);
}
}
......@@ -8,6 +8,11 @@ import org.rcisoft.integration.video.Service.IDaHuaVideoService;
public class DahuaVideoServiceImpl implements IDaHuaVideoService {
@Override
public boolean grabVideoDevicePicData() {
/**
* 先判断是否已经初始化
*/
return false;
}
}
......@@ -6,6 +6,7 @@ import org.rcisoft.integration.video.lib.NetSDKLib;
import org.rcisoft.integration.video.lib.NetSDKLib.LLong;
import java.io.File;
import java.util.concurrent.ConcurrentHashMap;
/**
* 大华视频监控设备SDK初始化配置
......@@ -13,6 +14,11 @@ import java.io.File;
@Slf4j
public class DaHuaVideoInitConfig {
/**
* 全局视频监控设备登录集合
*/
public static ConcurrentHashMap<Long,LLong> videoDeviceMap = new ConcurrentHashMap();
/**
* SDK核心
*/
......@@ -22,13 +28,23 @@ public class DaHuaVideoInitConfig {
// 设备信息
public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
// 登陆句柄
public static LLong m_hLoginHandle = new LLong(0);
/**
* SDK初始化状态
*/
private static boolean bInit = false;
/**
* SDK日志输出状态
*/
private static boolean bLogopen = false;
// device disconnect callback instance
private static DisConnect disConnect = new DisConnect();
// device reconnect callback instance
private static HaveReConnect haveReConnect = new HaveReConnect();
/**
* 初始化
*/
......@@ -98,13 +114,46 @@ public class DaHuaVideoInitConfig {
NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstOutParam.stuDeviceInfo=m_stDeviceInfo;
//m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError);
m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
// 登陆句柄
LLong m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
if(m_hLoginHandle.longValue() == 0) {
log.error("Login Device{} Port{}}Failed. %",m_strIp,m_nPort);
} else {
log.info("Login Success [ " + m_strIp + " ]");
}
return m_hLoginHandle.longValue() == 0? false:true;
boolean loginStatus =m_hLoginHandle.longValue() == 0? false:true;
if(loginStatus){
videoDeviceMap.put(0L,m_hLoginHandle);
}
return loginStatus;
}
/**
* 登录设备
*/
public static boolean login(Long deviceId,String m_strIp, int m_nPort, String m_strUser, String m_strPassword) {
//入参
NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam=new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstInParam.nPort=m_nPort;
pstInParam.szIP=m_strIp.getBytes();
pstInParam.szPassword=m_strPassword.getBytes();
pstInParam.szUserName=m_strUser.getBytes();
//出参
NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstOutParam.stuDeviceInfo=m_stDeviceInfo;
//m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError);
// 登陆句柄
LLong m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam);
if(m_hLoginHandle.longValue() == 0) {
log.error("Login Device{} Port{}}Failed. %",m_strIp,m_nPort);
} else {
log.info("Login Success [ " + m_strIp + " ]");
}
boolean loginStatus =m_hLoginHandle.longValue() == 0? false:true;
if(loginStatus){
videoDeviceMap.put(deviceId,m_hLoginHandle);
}
return loginStatus;
}
......@@ -112,16 +161,19 @@ public class DaHuaVideoInitConfig {
* 登出设备
*/
public static boolean logout() {
if(m_hLoginHandle.longValue() == 0) {
if(videoDeviceMap.containsKey(0L)){
LLong m_hLoginHandle = videoDeviceMap.get(0L);
if(m_hLoginHandle.longValue() == 0) {
return false;
}
boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
if(bRet) {
m_hLoginHandle.setValue(0);
}
return bRet;
}else{
return false;
}
boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle);
if(bRet) {
m_hLoginHandle.setValue(0);
}
return bRet;
}
}
package org.rcisoft.integration.video.config;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
import org.rcisoft.integration.video.lib.NetSDKLib;
import java.util.concurrent.ConcurrentHashMap;
/**
* 断线处理机制策略
*/
@Slf4j
public class DisConnect implements NetSDKLib.fDisConnect{
@Override
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
ConcurrentHashMap<Long, NetSDKLib.LLong> videoDeviceMap = DaHuaVideoInitConfig.videoDeviceMap;
Long nowDeviceId = null;
for(Long deviceId: videoDeviceMap.keySet()){
NetSDKLib.LLong lLong = videoDeviceMap.get(deviceId);
if(lLong.longValue() == lLoginID.longValue()){
nowDeviceId = deviceId;
break;
}
}
if(nowDeviceId!=null){
videoDeviceMap.remove(nowDeviceId);
}
}
}
package org.rcisoft.integration.video.config;
import com.sun.jna.Pointer;
import lombok.extern.slf4j.Slf4j;
import org.rcisoft.integration.video.lib.NetSDKLib;
/**
*设备连接恢复策略,实现设备连接恢复接口
*/
@Slf4j
public class HaveReConnect implements NetSDKLib.fHaveReConnect{
@Override
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment