From a6511d2069bdf65205fffc3cf0642f4cbb4867ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Mon, 25 Sep 2023 17:56:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=AF=B9=E9=9D=A2=E7=9B=B8?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhehekeji/web/lib/hik/HCNetSDK.java | 15 +++++++++++++++ .../lib/hik/HikCameraControlModuleImpl.java | 1 + .../web/lib/hik/HikLoginModuleImpl.java | 13 +++++++++++++ .../com/zhehekeji/web/service/PlcService.java | 18 +++++++++++++++++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HCNetSDK.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HCNetSDK.java index 9e2e61f..592a659 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HCNetSDK.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HCNetSDK.java @@ -3401,6 +3401,21 @@ DVR实现巡航数据结构 public int nReserved; } + public static class NET_DVR_LOCAL_TCP_PORT_BIND_CFG extends Structure { + public short wLocalBindTcpMinPort; //本地绑定Tcp最小端口 + public short wLocalBindTcpMaxPort; //本地绑定Tcp最大端口 + public byte[] byRes = new byte[60]; //保留 + + + + //高版本方法覆盖 + @Override + protected List getFieldOrder() { + return Arrays.asList("wLocalBindTcpMinPort","wLocalBindTcpMaxPort","byRes"); + } + + } + //硬解码预览参数 public static class NET_DVR_CARDINFO extends Structure { diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java index be362c7..d588d8b 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java @@ -249,6 +249,7 @@ public class HikCameraControlModuleImpl implements CameraControlModule { short wPicQuality = 0; HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality); boolean picResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, 1, jpegpara, path); + log.info("cameraId:"+cameraId +" 拍摄照片:"+path); if (!picResult) { log.error("pic error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java index 37f09a0..ae4c71f 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java @@ -24,6 +24,9 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { static HikExceptionCallBack hikExceptionCallBack = new HikExceptionCallBack(); + public void BindPort(int port ) { + + } /** * \if ENGLISH_LANG * Init @@ -36,6 +39,16 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { Pointer pointer = null; if(!hasInit){ Boolean ok = hcNetsdk.NET_DVR_Init(); + HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG strLocalTcpBind = new HCNetSDK.NET_DVR_LOCAL_TCP_PORT_BIND_CFG(); + strLocalTcpBind.read(); + strLocalTcpBind.wLocalBindTcpMinPort = (short) 3000; + strLocalTcpBind.wLocalBindTcpMaxPort = (short) 3000; + strLocalTcpBind.write(); + Pointer pStrLocalTcoBind = strLocalTcpBind.getPointer(); + if (hcNetsdk.NET_DVR_SetSDKLocalCfg(0, pStrLocalTcoBind) == false) { + System.out.println("绑定失败,错误码为" + hcNetsdk.NET_DVR_GetLastError()); + }else + System.out.println("绑定成功"); if(!ok){ log.error("hik Initialize SDK failed"); return false; diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index eb23c7d..54e003e 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -12,6 +12,7 @@ import com.zhehekeji.web.service.RFID.RFIDSocket; import com.zhehekeji.web.service.hikLightSource.HikControlSocket; import com.zhehekeji.web.service.ksec.KsecNettyClient; import com.zhehekeji.web.service.sick.SickSocket; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -504,6 +505,21 @@ public class PlcService { } } + /** + * 调用对面的相机id + * @param plcCmdInfo + * @param leftRight + * @param cameraId + * @return + */ + + public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo, Integer leftRight, Integer cameraId) { + Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); + Integer integer = cameraId.equals(street.getCamera1Id()) ? street.getCamera2Id() : street.getCamera1Id(); + return integer; + + } + public Integer getCameraByPlcCmd(PlcCmdInfo plcCmdInfo,Integer leftRight){ Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); //判断单双伸 type=0 单伸 1为双伸 @@ -592,7 +608,6 @@ public class PlcService { lightSources.forEach(lightSource -> { HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1); }); - Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1()); //重庆亚士创能盘点时先用同侧相机拍摄货物顶部 Integer leftRightTop = plcCmdInfo.getLeftRight1() == 1 ? 2 : 1; @@ -603,6 +618,7 @@ public class PlcService { cameraCmdCode = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) + "-IN"; } + Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1(),cameraIdTop); log.info("1 camera ptz:"+cameraCmdCode); gyrateCameraByCode(cameraIdTop, cameraCmdCode); try {