灯修改

相机使用大华
新疆科信智慧盘点
LAPTOP-S9HJSOEB\昊天 2 weeks ago
parent f23b1ac19c
commit 34b7fa20b0

@ -9,6 +9,7 @@ import com.zhehekeji.web.entity.CameraDownload;
import com.zhehekeji.web.entity.yolo.ImageTool;
import com.zhehekeji.web.lib.*;
import com.zhehekeji.web.lib.hik.HCNetSDK;
import com.zhehekeji.web.lib.joyware.JoywareCameraControlModuleImpl;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.mapper.CameraMapper;
import com.zhehekeji.web.service.CameraService;
@ -58,7 +59,13 @@ public class CameraControlController {
public Result up(@PathVariable Integer id) {
log.debug("球机控制向上");
checkLogin(id);
cameraControlModule.ptzControlUpStart(id,0,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlUpStart(id,camera.getChannel(),0,1);
return Result.success();
}
@ -67,7 +74,12 @@ public class CameraControlController {
public Result upStop(@PathVariable Integer id) {
log.debug("球机控制向上 停止");
checkLogin(id);
cameraControlModule.ptzControlUpEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlUpEnd(id,camera.getChannel());
return Result.success();
}
@ -75,7 +87,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向下")
public Result down(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlDownStart(id,0,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlDownStart(id,camera.getChannel(),0,1);
log.debug("球机控制向下");
return Result.success();
}
@ -84,7 +101,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向下-停止")
public Result downStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlDownEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlDownEnd(id,camera.getChannel());
log.debug("球机控制向下 停止");
return Result.success();
}
@ -93,7 +115,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向左")
public Result left(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftStart(id,0,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftStart(id,camera.getChannel(),0,1);
log.debug("球机控制向左");
return Result.success();
}
@ -102,7 +129,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制左-停止")
public Result leftStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftEnd(id,camera.getChannel());
log.debug("球机控制向左 -停止");
return Result.success();
}
@ -112,7 +144,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向左上")
public Result leftUp(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftUpStart(id,0,1,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftUpStart(id,camera.getChannel(),1,1);
log.debug("球机控制向上");
return Result.success();
}
@ -121,7 +158,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制左上-停止")
public Result leftUpStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftUpEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftUpEnd(id,camera.getChannel());
log.debug("球机控制向上 停止");
return Result.success();
}
@ -130,7 +172,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向左下")
public Result leftDown(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftDownStart(id,0,1,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftDownStart(id,camera.getChannel(),1,1);
log.debug("球机控制左下");
return Result.success();
}
@ -139,7 +186,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制左下-停止")
public Result leftDownStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlLeftDownEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlLeftDownEnd(id,camera.getChannel());
log.debug("球机控制左下 停止");
return Result.success();
@ -149,7 +201,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向右")
public Result right(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightStart(id,0,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightStart(id,camera.getChannel(),0,1);
log.debug("球机控制右");
return Result.success();
}
@ -158,7 +215,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制右-停止")
public Result rightStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightEnd(id,camera.getChannel());
log.debug("球机控制右 停止");
return Result.success();
}
@ -168,7 +230,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向右上")
public Result rightUp(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightUpStart(id,0,1,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightUpStart(id,camera.getChannel(),1,1);
log.debug("球机控制右上");
return Result.success();
}
@ -177,7 +244,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制右上-停止")
public Result rightUpStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightUpEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightUpEnd(id,camera.getChannel());
log.debug("球机控制右上 -停止");
return Result.success();
}
@ -186,7 +258,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制向右下")
public Result rightDown(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightDownStart(id,0,1,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightDownStart(id,camera.getChannel(),1,1);
log.debug("球机控制右下");
return Result.success();
}
@ -195,7 +272,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制右下-停止")
public Result rightDownStop(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlRightDownEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlRightDownEnd(id,camera.getChannel());
log.debug("球机控制右下 -停止");
return Result.success();
}
@ -204,7 +286,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变倍+")
public Result ZoomAddStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlZoomAddStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlZoomAddStart(id,camera.getChannel(),1);
return Result.success();
}
@ -212,7 +299,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变倍+ 停止")
public Result ZoomAddEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlZoomAddEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlZoomAddEnd(id,camera.getChannel());
return Result.success();
}
@ -220,7 +312,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变倍-")
public Result ZoomDecStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlZoomDecStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlZoomDecStart(id,camera.getChannel(),1);
return Result.success();
}
@ -228,7 +325,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变倍- 停止")
public Result ZoomDecEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlZoomDecEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlZoomDecEnd(id,camera.getChannel());
return Result.success();
}
@ -236,7 +338,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变焦 +")
public Result FocusAddStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlFocusAddStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlFocusAddStart(id,camera.getChannel(),1);
return Result.success();
}
@ -244,7 +351,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变焦+ 停止")
public Result focusAddEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlFocusAddEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlFocusAddEnd(id,camera.getChannel());
return Result.success();
}
@ -252,7 +364,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变焦 -")
public Result FocusDecStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlFocusDecStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlFocusDecStart(id,camera.getChannel(),1);
return Result.success();
}
@ -260,7 +377,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 变焦- 停止")
public Result focusDecEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlFocusDecEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlFocusDecEnd(id,camera.getChannel());
return Result.success();
}
@ -268,7 +390,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 光圈 +")
public Result irisAddStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlIrisAddStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlIrisAddStart(id,camera.getChannel(),1);
return Result.success();
}
@ -276,7 +403,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 光圈+ 停止")
public Result irisAddEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlIrisAddEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlIrisAddEnd(id,camera.getChannel());
return Result.success();
}
@ -284,7 +416,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 光圈 -")
public Result irisDecStart(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlIrisDecStart(id,0,1);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlIrisDecStart(id,camera.getChannel(),1);
return Result.success();
}
@ -292,7 +429,12 @@ public class CameraControlController {
@ApiOperation(value = "球机控制 光圈- 停止")
public Result irisDecEnd(@PathVariable Integer id) {
checkLogin(id);
cameraControlModule.ptzControlIrisDecEnd(id,0);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
cameraControlModule.ptzControlIrisDecEnd(id,camera.getChannel());
return Result.success();
}
@Resource
@ -302,6 +444,11 @@ public class CameraControlController {
@ApiOperation(value = "立即拍照")
public Result pic(@PathVariable Integer id) {
checkLogin(id);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
String path = "D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".jpeg";
cameraControlModule.pic(id,0,path);
taskDelayExecutor.addPicDelayTask(id,path,0L);
@ -313,9 +460,14 @@ public class CameraControlController {
public Result picCrop(@RequestParam ConfigProperties.InventoryImage image) {
checkLogin(image.getCameraId());
Camera camera = CameraConnMap.cameras.get(image.getCameraId());
if(camera == null){
log.error("camera is null,cameraId:{}",image.getCameraId());
}
String path = "D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".jpeg";
String pathCrop = "D:\\work\\crop\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".jpeg";
cameraControlModule.pic(image.getCameraId(),0,path);
cameraControlModule.pic(image.getCameraId(),camera.getChannel(),path);
try {
ImageTool.cropImage(path,pathCrop,image.getImageSize(),image.getImageSpace());
} catch (IOException e) {
@ -333,6 +485,11 @@ public class CameraControlController {
@ApiOperation(value = "录像")
public Result MP4delay(@PathVariable Integer id) {
//checkLogin(id);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
plcService.cameraVideo(1,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
return Result.success();
@ -343,6 +500,11 @@ public class CameraControlController {
@ApiOperation(value = "录像")
public Result MP4(@PathVariable Integer id) {
checkLogin(id);
Camera camera = CameraConnMap.cameras.get(id);
if(camera == null){
log.error("camera is null,cameraId:{}",id);
}
LocalDateTime localDateTime = LocalDateTime.of(2022,7,21,8,20);
cameraControlModule.downloadMp4(id,"E:\\work\\"+localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", localDateTime,localDateTime.plusMinutes(3));
return Result.success();
@ -353,6 +515,7 @@ public class CameraControlController {
public String MP4delay( HttpEntity<CameraDownload> httpEntity) {
CameraDownload cameraDownload = httpEntity.getBody();
//checkLogin(id);
String path = plcService.cameraVideo(cameraDownload.getId(),cameraDownload.getStartTime(),cameraDownload.getEndTime());
return path;
@ -362,10 +525,41 @@ public class CameraControlController {
@Resource
private CameraService cameraService;
@PostMapping("/try/{id}/{channel}")
@ApiOperation(value = "诊断:指定通道试转一次,验证该通道能否控云台(结果看日志 ptzTry)")
public Result ptzTry(@PathVariable Integer id, @PathVariable Integer channel) {
checkLogin(id);
if(cameraControlModule instanceof JoywareCameraControlModuleImpl){
((JoywareCameraControlModuleImpl) cameraControlModule).ptzTry(id, channel);
}else{
log.error("ptzTry only support joyware,cameraId:{}",id);
}
return Result.success();
}
@PostMapping("/scan/{id}")
@ApiOperation(value = "诊断:扫描设备通道,找出真正可控的通道(结果看日志 channelScan)")
public Result scan(@PathVariable Integer id) {
checkLogin(id);
if(cameraControlModule instanceof JoywareCameraControlModuleImpl){
((JoywareCameraControlModuleImpl) cameraControlModule).channelScan(id);
}else{
log.error("scan only support joyware,cameraId:{}",id);
}
return Result.success();
}
private void checkLogin(Integer cameraId){
if(CameraConnMap.getConnId(cameraId) == null){
Camera camera = cameraMapper.selectById(cameraId);
cameraService.cameraLogin(camera);
}
//CameraConnMap.cameras里没有时,下面camera.getChannel()会NPE,这里补进去
if(CameraConnMap.cameras.get(cameraId) == null){
Camera camera = cameraMapper.selectById(cameraId);
Assert.notNull(camera,"球机不存在");
cameraService.checkChannel(camera);
CameraConnMap.cameras.put(cameraId,camera);
}
}
}

@ -100,6 +100,8 @@ public class StreetController {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
}else if (configProperties.getLightSource().getType() == 3){
LightSourceService.lightController(lightSource.getIp(),lightSource.getPort(),1);
}else if (configProperties.getLightSource().getType() == 4){
LightSourceService.lightRelayController(lightSource.getIp(),lightSource.getPort(),1);
}
});
@ -125,6 +127,8 @@ public class StreetController {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),0);
}else if (configProperties.getLightSource().getType() == 3){
LightSourceService.lightController(lightSource.getIp(),lightSource.getPort(),0);
}else if (configProperties.getLightSource().getType() == 4){
LightSourceService.lightRelayController(lightSource.getIp(),lightSource.getPort(),0);
}
});
@ -175,6 +179,8 @@ public class StreetController {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
}else if (configProperties.getLightSource().getType() == 3){
LightSourceService.lightController(lightSource.getIp(),lightSource.getPort(),1);
}else if (configProperties.getLightSource().getType() == 4){
LightSourceService.lightRelayController(lightSource.getIp(),lightSource.getPort(),1);
}
});
@ -199,6 +205,8 @@ public class StreetController {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
}else if (configProperties.getLightSource().getType() == 3){
LightSourceService.lightController(lightSource.getIp(),lightSource.getPort(),1);
}else if (configProperties.getLightSource().getType() == 4){
LightSourceService.lightRelayController(lightSource.getIp(),lightSource.getPort(),1);
}
});
@ -221,6 +229,8 @@ public class StreetController {
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),0);
}else if (configProperties.getLightSource().getType() == 3){
LightSourceService.lightController(lightSource.getIp(),lightSource.getPort(),0);
}else if (configProperties.getLightSource().getType() == 4){
LightSourceService.lightRelayController(lightSource.getIp(),lightSource.getPort(),0);
}
});

@ -31,6 +31,8 @@ public class Camera {
private String rtcServer;
private Integer channel=0;
@TableField(exist = false)
private String status;

@ -1,9 +1,12 @@
package com.zhehekeji.web.lib;
import com.zhehekeji.web.entity.Camera;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* camera login handler
@ -16,6 +19,14 @@ public class CameraConnMap {
*/
public static Map<Integer, NetSDKLib.LLong> cameraMap = new HashMap<>();
public static Map<Integer, Camera> cameras = new HashMap<>();
/**
* key :cameraId
* value: 设备实际通道数(NET_DEVICEINFO_Ex.byChanNum),登录成功后写入
*/
public static Map<Integer, Integer> chanNumMap = new HashMap<>();
/**
* key:loginId
* value: cameraId
@ -30,6 +41,7 @@ public class CameraConnMap {
}
public static void disConn(Integer cameraId){
synchronized (cameraId.toString().intern()){
NetSDKLib.LLong lLong = cameraMap.get(cameraId);

@ -3,6 +3,7 @@ package com.zhehekeji.web.lib.joyware;
import com.sun.jna.ptr.IntByReference;
import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.core.util.Assert;
import com.zhehekeji.web.entity.Camera;
import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlModule;
import lombok.extern.slf4j.Slf4j;
@ -25,240 +26,338 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
return true;
}
/**
* NVR界面上的通道号从1开始,SDK接口要的通道号从0开始,所以大于0时减一
*/
private int channel(int nChannelID) {
return nChannelID > 0 ? nChannelID - 1 : 0;
}
/**
* 向上
*/
public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("up start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlUpStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) {
log.info("up end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlUpEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向下
*/
public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("down start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlDownStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) {
log.info("down end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlDownEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向左
*/
public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("left start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlLeftStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) {
log.info("left end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlLeftEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向右
*/
public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("right start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlRightStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) {
log.info("right end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlRightEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向左上
*/
public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("up left start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlLeftUpStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) {
log.info("up left end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlLeftUpEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向右上
*/
public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info("up right start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlRightUpStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) {
log.info("up right end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlRightUpEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向左下
*/
public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info(" left down start");
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlLeftDownStart error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId);
log.error("ptzControlLeftDownStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) {
log.info(" left down end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlLeftDownEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 向右下
*/
public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
log.info(" right down start");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
lParam1, lParam2, 0, 0);
if(!ok){
log.error("ptzControlRightDownStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) {
log.info(" right down end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlRightDownEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 变倍+
*/
public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlZoomAddStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlZoomAddEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 变倍-
*/
public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlZoomDecStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlZoomDecEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 变焦+
*/
public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlFocusAddStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlFocusAddEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 变焦-
*/
public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlFocusDecStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlFocusDecEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 光圈+
*/
public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlIrisAddStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlIrisAddEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
/**
* 光圈-
*/
public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
0, lParam2, 0, 0);
if(!ok){
log.error("ptzControlIrisDecStart error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) {
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,
boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), channel(nChannelID),
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
0, 0, 0, 1);
if(!ok){
log.error("ptzControlIrisDecEnd error:{},cameraId:{},channel:{},loginId:{}", ToolKits.getErrorCodePrint(),cameraId,nChannelID,CameraConnMap.getConnId(cameraId));
}
return ok;
}
public boolean pic(Integer cameraId,int channel, String realPath) {
NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS();
stuSnapParams.Channel = 0; // channel
stuSnapParams.Channel = channel(channel); // channel
stuSnapParams.mode = 0; // capture picture mode
stuSnapParams.Quality = 3; // picture quality
stuSnapParams.InterSnap = 0; // timer capture picture time interval
@ -272,6 +371,11 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
}
public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) {
Camera camera = CameraConnMap.cameras.get(cameraId);
if(camera == null){
log.error("camera is null,cameraId:{}",cameraId);
return;
}
PathUtil.checkDirc(path);
NetSDKLib.NET_TIME startTime = new NetSDKLib.NET_TIME();
@ -280,7 +384,7 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond());
NetSDKLib.NET_IN_DOWNLOAD_BY_DATA_TYPE download_by_data_type = new NetSDKLib.NET_IN_DOWNLOAD_BY_DATA_TYPE();
download_by_data_type.nChannelID = 0;
download_by_data_type.nChannelID = camera.getChannel();
download_by_data_type.stStartTime = startTime;
download_by_data_type.stStopTime = endTime;
download_by_data_type.szSavedFileName = path;
@ -308,8 +412,13 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
* @param cameraId 球机ID,来获取登录句柄
*/
public void ptz(Integer ptzId, String name, Integer cameraId) {
Camera camera = CameraConnMap.cameras.get(cameraId);
if(camera == null){
log.error("camera is null,cameraId:{}",cameraId);
return;
}
int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL;
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name));
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), channel(camera.getChannel()), dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name));
if (!ok) {
log.error("ptz error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId);
}
@ -323,9 +432,14 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
* @param cameraId
*/
public void toPtz(Integer ptzId, Integer cameraId) {
Camera camera = CameraConnMap.cameras.get(cameraId);
if(camera == null){
log.error("camera is null,cameraId:{}",cameraId);
return;
}
log.info("to ptz,ptzId:{},cameraId:{}",ptzId,cameraId);
int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL;
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null);
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), channel(camera.getChannel()), dwPTZCommand, 0, ptzId, 0, 0, null);
if (!ok) {
log.error("toPtz error, cameraId:{},ptzId:{},errorCode:{}", cameraId, ptzId,ToolKits.getErrorCodePrint());
}
@ -337,6 +451,11 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
* @param cameraId
*/
public void toPtzSlow(Integer cameraId,Integer x) {
Camera camera = CameraConnMap.cameras.get(cameraId);
if(camera == null){
log.error("camera is null,cameraId:{}",cameraId);
return;
}
int dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_MOVE_ABSOLUTELY;
NetSDKLib.PTZ_CONTROL_ABSOLUTELY absolutely = new NetSDKLib.PTZ_CONTROL_ABSOLUTELY();
@ -346,7 +465,7 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
absolutely.stuSpeed.fPositionY = 0.2f;
absolutely.write();
//absolutely.stuSpeed.fZoom = 0.5f;
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand,
Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), channel(camera.getChannel()), dwPTZCommand,
0, 0, 0, 0, absolutely.getPointer());
if (!ok) {
@ -367,6 +486,72 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
return JoywareLoginModuleImpl.netsdk.CLIENT_SetupDeviceTime(CameraConnMap.getConnId(cameraId), netTime);
}
/**
* 诊断用:扫描设备所有通道,只发"停止"指令(无副作用)+查询云台位置,找出真正能控制的通道
* 结果直接打日志:channelScan,cameraId:...,configuredChannel:...,ch=x,stop=...,location=...
* 注意:这里用的是原始通道号,不做减一
*/
public void channelScan(Integer cameraId) {
NetSDKLib.LLong loginId = CameraConnMap.getConnId(cameraId);
if (loginId == null) {
log.error("channelScan,not login,cameraId:{}", cameraId);
return;
}
Camera camera = CameraConnMap.cameras.get(cameraId);
Integer chanNum = CameraConnMap.chanNumMap.get(cameraId);
int max = (chanNum == null || chanNum <= 0) ? 32 : chanNum;
StringBuilder sb = new StringBuilder("\n");
for (int ch = 0; ch < max; ch++) {
boolean stopOk = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(loginId, ch,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 0, 0, 0, 1);
int stopErr = JoywareLoginModuleImpl.netsdk.CLIENT_GetLastError();
NetSDKLib.NET_PTZ_LOCATION_INFO location = new NetSDKLib.NET_PTZ_LOCATION_INFO();
location.nChannelID = ch;
location.write();
IntByReference retLen = new IntByReference();
boolean locationOk = JoywareLoginModuleImpl.netsdk.CLIENT_QueryDevState(loginId,
NetSDKLib.NET_DEVSTATE_PTZ_LOCATION, location.getPointer(), location.size(), retLen, 1000);
int locationErr = JoywareLoginModuleImpl.netsdk.CLIENT_GetLastError();
location.read();
sb.append("ch=").append(ch)
.append(",stop=").append(stopOk).append("(err:").append(stopErr).append(")")
.append(",location=").append(locationOk).append("(err:").append(locationErr).append(")")
.append(",pan=").append(location.nPTZPan)
.append(",tilt=").append(location.nPTZTilt)
.append("\n");
}
log.warn("channelScan,cameraId:{},configuredChannel:{},ip:{},loginId:{},chanNum:{} {}",
cameraId, camera == null ? null : camera.getChannel(),
camera == null ? null : camera.getIp(), loginId, chanNum, sb);
}
/**
* 诊断用:指定通道试转一次(向上一下再停止),验证该通道到底能不能控云台,结果看日志 ptzTry
* 注意:这里用的是原始通道号,不做减一,传几就是几
*/
public void ptzTry(Integer cameraId, int channel) {
NetSDKLib.LLong loginId = CameraConnMap.getConnId(cameraId);
if (loginId == null) {
log.error("ptzTry,not login,cameraId:{}", cameraId);
return;
}
boolean start = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(loginId, channel,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 0, 1, 0, 0);
int startErr = JoywareLoginModuleImpl.netsdk.CLIENT_GetLastError();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
boolean stop = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(loginId, channel,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 0, 0, 0, 1);
int stopErr = JoywareLoginModuleImpl.netsdk.CLIENT_GetLastError();
log.warn("ptzTry,cameraId:{},channel:{},loginId:{},start:{}(err:{}),stop:{}(err:{})",
cameraId, channel, loginId, start, startErr, stop, stopErr);
}
/**
* 旋转360度
* @param cameraId

@ -69,6 +69,11 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
System.out.println("Initialize SDK failed");
return false;
}
if(!bLogopen) {
// 打开SDK日志,默认输出 ./sdk_log/sdk_log.log,排查完记得关
bLogopen = netsdk.CLIENT_LogOpen(new NetSDKLib.LOG_SET_PRINT_INFO());
log.info("sdk log open:{}", bLogopen);
}
// 设置断线重连回调接口,设置过断线重连成功回调函数后,当设备出现断线情况,SDK内部会自动进行重连操作
// 此操作为可选操作,但建议用户进行设置
netsdk.CLIENT_SetAutoReconnect(haveReConnect, null);
@ -126,9 +131,9 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
pstInParam.szIP=m_strIp.getBytes();
pstInParam.szPassword=m_strPassword.getBytes();
pstInParam.szUserName=m_strUser.getBytes();
//出参
//出参(每台设备单独一个,避免多线程登录互相覆盖)
NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam=new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
pstOutParam.stuDeviceInfo=m_stDeviceInfo;
pstOutParam.stuDeviceInfo=new NetSDKLib.NET_DEVICEINFO_Ex();
//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);
int tryTimes = 0;
@ -140,7 +145,13 @@ public class JoywareLoginModuleImpl implements CameraControlLoginModule {
if(m_hLoginHandle.longValue()==0){
return null;
}
log.info("joyware login success,loginId:{}",m_hLoginHandle.longValue());
pstOutParam.read();
NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = pstOutParam.stuDeviceInfo;
deviceInfo.read();
int chanNum = deviceInfo.byChanNum;
CameraConnMap.chanNumMap.put(cameraId, chanNum);
log.info("joyware login success,loginId:{},cameraId:{},ip:{},chanNum:{},deviceType:{}",
m_hLoginHandle.longValue(), cameraId, m_strIp, chanNum, deviceInfo.byDVRType);
return m_hLoginHandle;
}

@ -354,7 +354,26 @@ public class CameraService {
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());
checkChannel(camera);
CameraConnMap.conn(camera.getId(),lLong);
CameraConnMap.cameras.put(camera.getId(),camera);
}
}
/**
* 校验通道号:配置的通道号 >= 设备实际通道数时,SDK会直接判为非法参数(错误码7),这里纠正为0
* (每台设备都是用自己的IP单独登录,直连IPC只有1个通道,通道号只能传0)
*/
public void checkChannel(Camera camera){
if(camera == null){
return;
}
Integer chanNum = CameraConnMap.chanNumMap.get(camera.getId());
Integer channel = camera.getChannel() == null ? 0 : camera.getChannel();
if(chanNum != null && chanNum > 0 && channel >= chanNum){
log.error("camera channel illegal,auto correct to 0,cameraId:{},ip:{},configuredChannel:{},deviceChanNum:{}",
camera.getId(),camera.getIp(),channel,chanNum);
camera.setChannel(0);
}
}

@ -119,7 +119,7 @@ public class InitService implements ApplicationRunner {
}
}else if(configProperties.getServerMode() == 3){}
// TaskDelayExecutor.runMp4DownloadExecutor();
streetController.closeLightSource();
// streetController.closeLightSource();
cameras.forEach(camera -> {
LoginThread loginThread = new LoginThread(camera);
loginThread.start();

@ -3,6 +3,7 @@ package com.zhehekeji.web.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhehekeji.web.entity.LightSource;
import com.zhehekeji.web.mapper.LightSourceMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -15,6 +16,7 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
@Slf4j
@Service
public class LightSourceService {
@ -81,4 +83,64 @@ public class LightSourceService {
}
}
public static void lightRelayController(String ip, Integer port, Integer stat) {
Socket socket = new Socket();
OutputStream os = null;
InputStream is = null;
try {
socket.connect(new InetSocketAddress(ip, port), 3000);
os = socket.getOutputStream();
is = socket.getInputStream();
socket.setSoTimeout(3000);
// 开灯: 01 05 00 00 FF 00 8C 3A,关灯: 01 05 00 00 FF 01 4D FA
byte[] cmd = stat != null && stat == 1
? new byte[]{0x01, 0x05, 0x00, 0x00, (byte) 0xFF, 0x00, (byte) 0x8C, 0x3A}
: new byte[]{0x01, 0x05, 0x00, 0x00, (byte) 0x00, 0x00, (byte)0xCD, (byte) 0xCA};
os.write(cmd);
os.flush();
// 读取返回,判断是否成功(返回帧通常与发送帧一致)
byte[] resp = new byte[8];
int len = is.read(resp);
if (len > 0) {
log.info("[lightRelayController] ip={}, port={}, stat={}, 发送={}, 返回={}",
ip, port, stat, toHex(cmd), toHex(resp, len));
}
} catch (IOException e) {
log.error("[lightRelayController] 控制失败, ip={}, port={}, stat={}", ip, port, stat, e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
log.error("[lightRelayController] 关闭输出流失败", e);
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
log.error("[lightRelayController] 关闭输入流失败", e);
}
}
try {
socket.close();
} catch (IOException e) {
log.error("[lightRelayController] 关闭socket失败", e);
}
}
}
private static String toHex(byte[] data) {
return toHex(data, data.length);
}
private static String toHex(byte[] data, int len) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
sb.append(String.format("%02X ", data[i]));
}
return sb.toString().trim();
}
}

Loading…
Cancel
Save