相机重连

焦作-mxbc-北起
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 6bafcdd0bc
commit c6571460da

@ -16,6 +16,7 @@ public class CameraConnMap {
* value: loginId * value: loginId
*/ */
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>(); public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>();
public static Map.Entry<Integer, NetSDKLib.LLong> cameraMapEntry = new HashMap.SimpleEntry<>(0,null);
/** /**
* key :cameraId * key :cameraId
* value: loginId * value: loginId

@ -9,8 +9,11 @@ import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlModule; import com.zhehekeji.web.lib.CameraControlModule;
import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.pojo.CameraPtzPojo; import com.zhehekeji.web.pojo.CameraPtzPojo;
import com.zhehekeji.web.service.CameraService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Duration; import java.time.Duration;
@ -30,6 +33,12 @@ import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG;
@Slf4j @Slf4j
public class HikCameraControlModuleImpl implements CameraControlModule { public class HikCameraControlModuleImpl implements CameraControlModule {
public HikCameraControlModuleImpl(CameraService cameraService){
this.cameraService = cameraService;
}
CameraService cameraService;
public boolean connectStatus(Integer cameraId){ public boolean connectStatus(Integer cameraId){
NetSDKLib.LLong userId = CameraConnMap.getConnId(cameraId); NetSDKLib.LLong userId = CameraConnMap.getConnId(cameraId);
@ -300,7 +309,11 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality); HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality);
boolean picResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, 1, jpegpara, path); boolean picResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, 1, jpegpara, path);
if (!picResult) { if (!picResult) {
log.error("pic error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); int error = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError();
log.error("pic error:{},cameraId:{}",error ,cameraId);
if(error == 102){
cameraService.cameraConnect(cameraId);
}
} }
return picResult; return picResult;
@ -434,7 +447,12 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
int dwzCommand = HCNetSDK.SET_PRESET; int dwzCommand = HCNetSDK.SET_PRESET;
Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwzCommand, ptzId.intValue()); Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwzCommand, ptzId.intValue());
if(!ok){ if(!ok){
log.error("ptz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId);
int error = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError();
log.error("ptz error:{},cameraId:{}",error,cameraId);
if(error == 102){
cameraService.cameraConnect(cameraId);
}
} }
Assert.isTrue(ok, "设置失败"); Assert.isTrue(ok, "设置失败");
} }

@ -19,15 +19,21 @@ public class HikExceptionCallBack implements HCNetSDK.FExceptionCallBack {
CameraService cameraService; CameraService cameraService;
@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 lLong = new NetSDKLib.LLong(lUserID);
if(dwType == 32768){ Integer cameraId =CameraConnMap.getCameraIdByLoginId(lLong);
if(dwType == 0x8000){
if(cameraId != null) { if(cameraId != null) {
log.error("hik disconnect,cameraId:{}", cameraId); log.error("hik disconnect,cameraId:{}", cameraId);
} }
}else if(dwType == 32791){ }else if(dwType == 0x8017){
log.info("hik reconnect,cameraId:{}", CameraConnMap.getCameraIdByLoginId(new NetSDKLib.LLong(lUserID))); log.info("hik reconnect,cameraId:{}", cameraId);
if(!lLong.equals(CameraConnMap.getConnId(cameraId))) {
log.error("hik reconnect,cameraId:{},lUserId:{}", cameraId,lLong);
CameraConnMap.cameraMap.put(cameraId, new NetSDKLib.LLong(lUserID));
}
} }
} }

@ -4,7 +4,11 @@ import com.sun.jna.Pointer;
import com.zhehekeji.web.lib.CameraConnMap; import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.CameraControlLoginModule;
import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.service.CameraService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/** /**
* *
@ -71,6 +75,17 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
* \endif * \endif
*/ */
public NetSDKLib.LLong login(Integer cameraId,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.error("hik cameraId:{}注销",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();//设备信息
@ -89,17 +104,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是 m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是
m_strLoginInfo.write(); m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息 HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息
////先注销,在登录
if (CameraConnMap.getConnId(cameraId) !=null ) {
if(hcNetsdk.NET_DVR_Logout_V30(CameraConnMap.getConnId(cameraId).intValue())) {
log.error("hik cameraId:{}注销",cameraId);
}
}
CameraConnMap.disConn(cameraId);
int m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo); int m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo);
int lChannel = 2; int lChannel = 2;

@ -71,7 +71,7 @@ public class InitService implements ApplicationRunner {
if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA){ if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA){
cameraControlModule = new JoywareCameraControlModuleImpl(); cameraControlModule = new JoywareCameraControlModuleImpl();
}else { }else {
cameraControlModule = new HikCameraControlModuleImpl(); cameraControlModule = new HikCameraControlModuleImpl(cameraService);
} }
plcService.setCameraControlModule(cameraControlModule); plcService.setCameraControlModule(cameraControlModule);
cameraService.setCameraControlModule(cameraControlModule); cameraService.setCameraControlModule(cameraControlModule);

@ -659,8 +659,8 @@ public class PlcService {
gyrateCameraByCode(cameraIdTop, c); gyrateCameraByCode(cameraIdTop, c);
} else { } else {
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1); String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1);
log.info("camera ptz" + cmdCode); log.info("camera ptz" + c);
gyrateCameraByCode(cameraIdTop, cmdCode); gyrateCameraByCode(cameraIdTop, c);
try { try {
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime()); Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -682,14 +682,14 @@ public class PlcService {
//成都蜜雪冰城 只拍照人工核对 //成都蜜雪冰城 只拍照人工核对
String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-TOP"; String e2 = "E2-" + plcCmdInfo.getLeftRightStr(1) + "-TOP";
log.info("camera ptz" + e2); log.info("camera ptz" + e2);
gyrateCameraByCode(cameraId, e2); gyrateCameraByCode(cameraIdTop, e2);
try { try {
Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime()); Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime());
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
cameraCapture(cameraId, false, null, path + ".jpg"); cameraCapture(cameraIdTop, false, null, path + ".jpg");
try { try {
Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime()); Thread.sleep(configProperties.getCameraConfig().getEDelayCaptureTime());

Loading…
Cancel
Save