相机垂直方向调整

nanjing-yancao-wuliuzhongxin-qsl
LAPTOP-S9HJSOEB\昊天 3 years ago
parent 193cf9a3e7
commit 55bef5adf9

@ -1,5 +1,7 @@
package com.zhehekeji.web.lib;
import com.zhehekeji.web.pojo.camera.CameraPtzPojo;
import java.time.LocalDateTime;
public interface CameraControlModule {
@ -27,6 +29,8 @@ public interface CameraControlModule {
boolean ptzControlLeftEnd(Integer cameraId, int nChannelID);
CameraPtzPojo ptzGetDVRConfig(Integer cameraId);
/**
*
*/

@ -3134,6 +3134,12 @@ DVR实现巡航数据结构
public short wPanPos;//水平参数
public short wTiltPos;//垂直参数
public short wZoomPos;//变倍参数
@Override
protected List getFieldOrder() {
// TODO Auto-generated method stub
return Arrays.asList("wAction","wPanPos","wTiltPos","wZoomPos"); //这里参数顺序和SDK开发包的C++定义必须完全一致
}
}
//球机范围信息

@ -1,12 +1,15 @@
package com.zhehekeji.web.lib.hik;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
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 com.zhehekeji.web.lib.joyware.NetSDKLib;
import com.zhehekeji.web.pojo.camera.CameraPtzPojo;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
@ -18,6 +21,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_GET_PTZPOS;
/**
*
*
@ -76,6 +81,40 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
int lUserId = CameraConnMap.getConnId(cameraId).intValue();
return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 1);
}
@Override
public CameraPtzPojo ptzGetDVRConfig(Integer lUserID) {
CameraPtzPojo cameraPtzPojo = new CameraPtzPojo();
int lUserId = CameraConnMap.getConnId(lUserID).intValue();
HCNetSDK.NET_DVR_PTZPOS netDvrPtzpos = new HCNetSDK.NET_DVR_PTZPOS();
Pointer pointer = netDvrPtzpos.getPointer();
IntByReference intByReference = new IntByReference(1);
boolean b_GetPTZ = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetDVRConfig(lUserId, NET_DVR_GET_PTZPOS,1,pointer,netDvrPtzpos.size(),intByReference);
if (b_GetPTZ == false) {
System.out.println("获取PTZ坐标信息失败错误码" +HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError());
cameraPtzPojo.setGetSuccess(false);
}else {
cameraPtzPojo.setGetSuccess(true);
netDvrPtzpos.read();
cameraPtzPojo.setWPanPos(hexToDegree(netDvrPtzpos.wPanPos));
cameraPtzPojo.setWTiltPos(hexToDegree(netDvrPtzpos.wTiltPos));
cameraPtzPojo.setWZoomPos(hexToDegree(netDvrPtzpos.wZoomPos));
}
return cameraPtzPojo;
}
static double hexToDegree(short hex) {
String value = Integer.toHexString(hex);
Integer v = Integer.parseInt(value);
int integerPart = v / 10;
int decimalPart = v % 10;
return integerPart + decimalPart / 10.0;
}
public static void main(String[] args) {
hexToDegree((short)10322);
}
/**
*
*/

@ -5,6 +5,7 @@ import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.core.util.Assert;
import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlModule;
import com.zhehekeji.web.pojo.camera.CameraPtzPojo;
import lombok.extern.slf4j.Slf4j;
import java.time.LocalDateTime;
@ -76,6 +77,13 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
0, 0, 0, 1);
}
//暂未开发
@Override
public CameraPtzPojo ptzGetDVRConfig(Integer lUserID) {
return null;
}
/**
*
*/

@ -0,0 +1,12 @@
package com.zhehekeji.web.pojo.camera;
import lombok.Data;
@Data
public class CameraPtzPojo {
short wAction;//获取时该字段无效
double wPanPos;//水平参数
double wTiltPos;//垂直参数
double wZoomPos;//变倍参数
boolean getSuccess;
}

@ -2,11 +2,13 @@ package com.zhehekeji.web.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhehekeji.common.util.PathUtil;
import com.zhehekeji.core.pojo.Result;
import com.zhehekeji.web.config.ConfigProperties;
import com.zhehekeji.web.entity.*;
import com.zhehekeji.web.lib.*;
import com.zhehekeji.web.mapper.*;
import com.zhehekeji.web.pojo.OrderVO;
import com.zhehekeji.web.pojo.camera.CameraPtzPojo;
import com.zhehekeji.web.service.RFID.RFIDMap;
import com.zhehekeji.web.service.RFID.RFIDSocket;
import com.zhehekeji.web.service.client.ECResultMessage;
@ -112,6 +114,46 @@ public class PlcService {
public void orderStopByWarn(String orderNum) {
}
public void verticalAdjustment(Integer cameraId){
log.info("球机"+cameraId+"重置垂直方向开始");
Double origin = null;
int i = 10 ;
while (i >=0){
i-- ;
CameraPtzPojo cameraPtzPojo = cameraControlModule.ptzGetDVRConfig(cameraId);
if(cameraPtzPojo.isGetSuccess()) {
cameraControlModule.ptzControlDownStart(cameraId, 0, 0, 1);
log.info("球机控制向下");
System.out.println("获取的垂直位置"+cameraPtzPojo.getWTiltPos());
if (origin == null) {
origin = cameraPtzPojo.getWTiltPos();
} else if (cameraPtzPojo.getWTiltPos() <= origin) {
break;
}
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
log.info("球机"+cameraId+"重置垂直方向成功");
cameraControlModule.ptzControlDownEnd(cameraId,0);
gyrateCameraByCode(cameraId,"C1");
}
public void verticalAdjustmentByStreet(String SRMNumber){
Street street = streetService.getStreetByPlcId(SRMNumber);
//南京烟草物流只有一个相机
Integer cameraId = street.getCamera1Id() == null ? street.getCamera2Id():street.getCamera1Id();
verticalAdjustment(cameraId);
}
public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) {
String path = PathUtil.createFileName("mp4",cameraId);

@ -164,6 +164,8 @@ public class Decoder extends DelimiterBasedFrameDecoder {
// }
String picPath = plcService.IntoStockOver(srmNumber, ptOrderContent.getTaskNo(), ptOrderContent.getGoodsLocation());
PTData resData = PTData.IntoStock04(ptOrderContent.getSRMNUmber(), ptOrderContent.getTaskNo(), ptOrderContent.getGoodsLocation(), picPath, ptOrderContent.getGoodsLocation());
//重置相机水平方向
plcService.verticalAdjustmentByStreet( ptOrderContent.getSRMNUmber());
PuTianNettyClient.write(resData);
}
}

@ -155,7 +155,8 @@ public class PTDecoder extends LineBasedFrameDecoder {
log.info("入库完成拍照");
PTOrderContent ptOrderContent = PTOrderContent.OrderContentIS01And03(ptData.getContent());
String picPath = plcService.IntoStockOver(ptOrderContent.getSRMNUmber(), ptOrderContent.getTaskNo(), ptOrderContent.getGoodsLocation());
//
//重置相机水平方向
plcService.verticalAdjustmentByStreet( ptOrderContent.getSRMNUmber());
// //向客户端发送读码指令,等待客户端返回条码
// ISTransmission isTransmission = new ISTransmission(ptOrderContent.getSRMNUmber(), ptOrderContent.getTaskNo(), ptOrderContent.getGoodsLocation());
// //为防万一先清除code
@ -175,6 +176,7 @@ public class PTDecoder extends LineBasedFrameDecoder {
// PTData resData = PTData.IntoStock04(ptOrderContent.getSRMNUmber(), ptOrderContent.getTaskNo(), ptOrderContent.getGoodsLocation(),picPath,code);
// PuTianNettyClient.write(resData);
}
}
}
}

@ -31,7 +31,7 @@ userUrl: http://115.236.65.98:11001
# ----默认摄像头的连接信息
cameraConfig:
# ------------球機選擇--- 0:利珀 1海康
cameraType: 0
cameraType: 1
cameraPassword: a1234567
cameraUser: admin
cameraPort: 8000

Loading…
Cancel
Save