相机重连逻辑修改

dongguan-huaweiyun
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 6bf74bacab
commit 4dbd8cc6d7

@ -58,7 +58,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(camera.getId(),camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
return lLong;
}

@ -43,6 +43,7 @@ public class CameraConnMap {
}
public static Integer getCameraIdByLoginId(NetSDKLib.LLong lLong){
return loginMap.get(lLong);
}

@ -4,6 +4,5 @@ import com.leaper.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);
}

@ -10,13 +10,20 @@ 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){
log.error("hik disconnect,cameraId:{}", cameraId);
if(cameraId != null){
log.error("hik disconnect,cameraId:{}", cameraId);
CameraConnMap.disConn(cameraId);
}
}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));
}
}

@ -1,5 +1,6 @@
package com.leaper.web.lib.hik;
import com.leaper.web.lib.CameraConnMap;
import com.leaper.web.lib.joyware.NetSDKLib;
import com.sun.jna.Pointer;
import com.leaper.web.lib.CameraControlLoginModule;
@ -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();//设备信息
@ -92,7 +100,6 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
int lChannel = 2;
//byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值
int tryTimes = 0;
while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){
log.error("hik login error,ip:{},port:{},errorCode:{}",m_strIp,m_nPort,hcNetsdk.NET_DVR_GetLastError());

@ -113,7 +113,7 @@ public class JoywareLoginModuleImpl 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) {
//IntByReference nError = new IntByReference(0);
//入参
init(disConnectCallBack,haveReConnect);

@ -118,14 +118,25 @@ public class CameraService {
public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
for(Camera camera : cameras){
if (CameraConnMap.cameraMap.containsKey(camera.getId())) {
camera.setStatus("连接成功");
List<Camera> collect = cameras.parallelStream().peek(camera -> {
Boolean ok = false;
if(CameraConnMap.getConnId(camera.getId())!=null){
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
} else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
}
}
if (ok) {
camera.setStatus("连接正常");
} else {
CameraConnMap.disConn(camera.getId());
camera.setStatus("未连接");
cameraLogin(camera);
}
}
}).collect(Collectors.toList());
return new PageInfo<>(cameras);
}
@ -401,7 +412,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);

@ -56,6 +56,8 @@ public class CronTab {
PicDataMapper picDataMapper;
@Resource
OrderLiveMapper orderLiveMapper;
@Resource
CameraService cameraService;
private static LocalDateTime now;
@ -99,7 +101,6 @@ public class CronTab {
}
@Scheduled(cron = "0 * * * * ?")
//@Scheduled(cron = "0 0/1 * * * *")
public void cameraConn() {
log.info("球机连接判断");
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
@ -131,10 +132,13 @@ public class CronTab {
public void run() {
try {
Boolean ok = false;
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
} else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
if(CameraConnMap.getConnId(camera.getId())!=null){
if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) {
ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue());
} else {
ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()));
}
}
if (ok) {
@ -142,6 +146,7 @@ public class CronTab {
} else {
CameraConnMap.disConn(camera.getId());
camera.setStatus("未连接");
//cameraService.cameraLogin(camera);
}
} catch (Exception e) {
CameraConnMap.disConn(camera.getId());

Loading…
Cancel
Save