相机重连逻辑修改

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

@ -58,7 +58,7 @@ public class CameraControlController {
log.info("相机登录 cameraId:{}",cameraId); log.info("相机登录 cameraId:{}",cameraId);
Camera camera = cameraMapper.selectById(cameraId); Camera camera = cameraMapper.selectById(cameraId);
Assert.notNull(camera,"球机不存在"); 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; return lLong;
} }

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

@ -4,6 +4,5 @@ import com.leaper.web.lib.joyware.NetSDKLib;
public interface CameraControlLoginModule { 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 @Override
public void invoke(int dwType, int lUserID, int lHandle, Pointer pUser) { 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(dwType == 32768){
log.error("hik disconnect,cameraId:{}", cameraId); if(cameraId != null){
log.error("hik disconnect,cameraId:{}", cameraId);
CameraConnMap.disConn(cameraId);
}
}else if(dwType == 32791){ }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; package com.leaper.web.lib.hik;
import com.leaper.web.lib.CameraConnMap;
import com.leaper.web.lib.joyware.NetSDKLib; import com.leaper.web.lib.joyware.NetSDKLib;
import com.sun.jna.Pointer; import com.sun.jna.Pointer;
import com.leaper.web.lib.CameraControlLoginModule; import com.leaper.web.lib.CameraControlLoginModule;
@ -68,7 +69,14 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
* *
* \endif * \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(); init();
HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 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();//设备信息 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; int lChannel = 2;
//byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值 //byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值
int tryTimes = 0; int tryTimes = 0;
while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){ while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){
log.error("hik login error,ip:{},port:{},errorCode:{}",m_strIp,m_nPort,hcNetsdk.NET_DVR_GetLastError()); 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 * \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); //IntByReference nError = new IntByReference(0);
//入参 //入参
init(disConnectCallBack,haveReConnect); init(disConnectCallBack,haveReConnect);

@ -118,14 +118,25 @@ public class CameraService {
public PageInfo<Camera> cameras(StreetSearch streetSearch) { public PageInfo<Camera> cameras(StreetSearch streetSearch) {
PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize());
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0)); List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
for(Camera camera : cameras){ List<Camera> collect = cameras.parallelStream().peek(camera -> {
if (CameraConnMap.cameraMap.containsKey(camera.getId())) {
camera.setStatus("连接成功"); 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 { } else {
CameraConnMap.disConn(camera.getId());
camera.setStatus("未连接"); camera.setStatus("未连接");
cameraLogin(camera);
} }
} }).collect(Collectors.toList());
return new PageInfo<>(cameras); return new PageInfo<>(cameras);
} }
@ -401,7 +412,7 @@ public class CameraService {
} }
public void cameraLogin(Camera camera) { 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) { if (lLong != null) {
log.info("camera login success,cameraId:{},ip:{}", camera.getId(), camera.getIp()); log.info("camera login success,cameraId:{},ip:{}", camera.getId(), camera.getIp());
CameraConnMap.conn(camera.getId(), lLong); CameraConnMap.conn(camera.getId(), lLong);

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

Loading…
Cancel
Save