| | |
| | | import org.springframework.context.ApplicationEventPublisher; |
| | | import org.springframework.util.StopWatch; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.awt.geom.Point2D; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.File; |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer chanNo = cmd.getChanNo(); |
| | | int userId = cmd.getLoginId().intValue(); |
| | | |
| | | ArdCamera camera = getCamera(cameraId); |
| | | if ("1".equals(camera.getType())) { |
| | | return getPtzHigh(cmd); |
| | | } else { |
| | | NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); |
| | | Pointer point = m_ptzPosCurrent.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | //如获取的水平参数P的值是0x1750,实际显示的P值为175度; |
| | | //获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度; |
| | | //获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。 |
| | | BigDecimal b = BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10); |
| | | BigDecimal c = BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10); |
| | | BigDecimal d = BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10); |
| | | BigDecimal b = |
| | | BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wPanPos)) / 10); |
| | | BigDecimal c = |
| | | BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wTiltPos)) / 10); |
| | | BigDecimal d = |
| | | BigDecimal.valueOf((float) Integer.parseInt(Integer.toHexString(m_ptzPosCurrent.wZoomPos)) / 10); |
| | | float p = b.setScale(1, RoundingMode.HALF_UP).floatValue(); |
| | | float t = c.setScale(1, RoundingMode.HALF_UP).floatValue(); |
| | | float z = d.setScale(1, RoundingMode.HALF_UP).floatValue(); |
| | | return new PtzDto(p, t, z); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | * @author 刘苏义 |
| | | * @date 2024/9/5 17:00 |
| | | */ |
| | | @Override |
| | | public PtzDto getPtzHigh(CameraCmd cmd) { |
| | | private PtzDto getPtzHigh(CameraCmd cmd) { |
| | | try { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer chanNo = cmd.getChanNo(); |
| | |
| | | Integer channelNum = cmd.getChanNo(); |
| | | PtzDto ptzDto = cmd.getPtzDto(); |
| | | int userId = cmd.getLoginId().intValue(); |
| | | ArdCamera camera = getCamera(cameraId); |
| | | if ("1".equals(camera.getType())) { |
| | | DeviceCFG systemInfo = getSystemInfo(cmd); |
| | | if (systemInfo != null && "5.5.112".equals(systemInfo.getDwSoftwareVersion())) { |
| | | return setPtzHighT(cmd); |
| | | } |
| | | return setPtzHigh(cmd); |
| | | } else { |
| | | NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); |
| | | m_ptzPosCurrent.wAction = 1; |
| | | try { |
| | |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 设置高精度ptz信息(透传) |
| | |
| | | * @author 刘苏义 |
| | | * @date 2024/9/5 17:04 |
| | | */ |
| | | @Override |
| | | public Boolean setPtzHighT(CameraCmd cmd) { |
| | | private Boolean setPtzHighT(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer chanNo = cmd.getChanNo(); |
| | | PtzDto ptzDto = cmd.getPtzDto(); |
| | |
| | | } |
| | | |
| | | //非透传 旧设备使用 新固件会导致2通道不自动聚焦 |
| | | @Override |
| | | public Boolean setPtzHigh(CameraCmd cmd) { |
| | | private Boolean setPtzHigh(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer chanNo = cmd.getChanNo(); |
| | | PtzDto ptzDto = cmd.getPtzDto(); |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public String recordStop(CameraCmd cmd) { |
| | | String url = ""; |
| | |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取相机信息(会校验存在性) |
| | | */ |
| | | private ArdCamera getCamera(String cameraId) { |
| | | ArdCamera camera = redisService.getCacheMapValue(CacheConstants.CAMERA_LIST, cameraId); |
| | | if (camera == null) { |
| | | throw CameraSDKException.cameraNotExist(cameraId); |
| | | } |
| | | return camera; |
| | | } |
| | | } |