diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java index 51b165e..3ac0da4 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -47,7 +47,7 @@ public class CameraControlController { log.info("相机登录 cameraId:{}",cameraId); Camera camera = cameraMapper.selectById(cameraId); Assert.notNull(camera,"球机不存在"); - NetSDKLib.LLong lLong = loginControlModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); + NetSDKLib.LLong lLong = loginControlModule.login(cameraId,camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); return lLong; } diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java index ef03a71..3210c4a 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java @@ -43,7 +43,12 @@ public class CameraConnMap { } public static Integer getCameraIdByLoginId(NetSDKLib.LLong lLong){ - return loginMap.get(lLong); + for (Integer integer : cameraMap.keySet()){ + if (cameraMap.get(integer).equals(lLong)) { + return integer; + } + } + return null; } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java b/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java index 49d198e..c8ef3c3 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java @@ -4,6 +4,6 @@ import com.zhehekeji.web.lib.joyware.NetSDKLib; public interface CameraControlLoginModule { - NetSDKLib.LLong login(String ip, int port, String user, String password); + NetSDKLib.LLong login(Integer id,String ip, int port, String user, String password); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java index 12742d5..e65ace6 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikExceptionCallBack.java @@ -10,7 +10,8 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack { @Override public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { - Integer cameraId =CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID)); + NetSDKLib.LLong lLoginID = new NetSDKLib.LLong(lUserID); + Integer cameraId =CameraConnMap.getCameraIdByLoginId(lLoginID); if(dwType == 32768){ if(cameraId != null){ @@ -18,7 +19,10 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack { } }else if(dwType == 32791){ - log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID))); + if(CameraConnMap.getCameraIdByLoginId(lLoginID) == null){ + CameraConnMap.conn(cameraId,lLoginID); + } + log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(lLoginID)); } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java index 37f09a0..3276a1e 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java @@ -1,6 +1,7 @@ package com.zhehekeji.web.lib.hik; import com.sun.jna.Pointer; +import com.zhehekeji.web.lib.CameraConnMap; import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.joyware.NetSDKLib; import lombok.extern.slf4j.Slf4j; @@ -68,7 +69,14 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { * 登录设备 * \endif */ - public NetSDKLib.LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { + public NetSDKLib.LLong login(Integer cameraId,String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { + //先注销,再登录 + if(CameraConnMap.getConnId(cameraId) !=null){ + if (hcNetsdk.NET_DVR_Logout_V30(CameraConnMap.getConnId(cameraId).intValue())){ + log.info("hik camera:{}注销",cameraId); + } + } + CameraConnMap.disConn(cameraId); init(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java index 1a201db..612a36c 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java @@ -117,7 +117,7 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule { * 登录设备 * \endif */ - public LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { + public LLong login(Integer cameraId,String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { //IntByReference nError = new IntByReference(0); //入参 init(disConnectCallBack,haveReConnect); diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 77ba7ec..86b8c31 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -351,7 +351,7 @@ public class CameraService { } public void cameraLogin(Camera camera){ - NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); + NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getId(),camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); if(lLong != null){ log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp()); CameraConnMap.conn(camera.getId(),lLong);