From 7053be666f20f1f56c7e23f0dd84d9ca2e836b15 Mon Sep 17 00:00:00 2001
From: aix <vip_xiaobin810@163.com>
Date: Tue, 13 Aug 2024 22:35:39 +0800
Subject: [PATCH] 拍照录像接口
---
src/main/java/com/dji/sample/control/controller/DockController.java | 17 ++++++++++++-----
src/main/java/com/dji/sample/control/service/impl/ControlServiceImpl.java | 16 ++++++++++++++++
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/dji/sample/control/controller/DockController.java b/src/main/java/com/dji/sample/control/controller/DockController.java
index 1fea75a..6f1ecf8 100644
--- a/src/main/java/com/dji/sample/control/controller/DockController.java
+++ b/src/main/java/com/dji/sample/control/controller/DockController.java
@@ -25,7 +25,9 @@
import javax.validation.Valid;
import java.util.List;
import java.util.Objects;
-import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
/**
* @author sean
@@ -94,6 +96,8 @@
@SysLogAnnotation(operModul = "云台拍照录像控制", operType = "控制指令", operDesc = "云台拍照录像控制")
public ResponseResult photoAndVideoCmd(@PathVariable String sn, @PathVariable String type) throws Exception {
+ String bid = UUID.randomUUID().toString();
+
List<DeviceDTO> list = deviceService.getDevicesByParams(DeviceQueryParam.builder().deviceSn(sn).build());
if (list.isEmpty()) {
@@ -126,6 +130,7 @@
param.setSn(sn);
DronePayloadParam data = new DronePayloadParam();
data.setPayloadIndex(cameraDTO.getPayloadIndex());
+
//拍照
switch (type) {
case "photo":
@@ -133,13 +138,12 @@
//切换模式
ResponseResult swResult = switchingMode(sn, CameraModeEnum.PHOTO, cameraDTO);
log.info("摄像头切换状态:{}", swResult);
-
}
param.setCmd(PayloadCommandsEnum.CAMERA_PHOTO_TAKE);
param.setData(data);
break;
case "video_start": {//开始录像
- if (Objects.equals(cameraDTO.getCameraMode().getMode(), CameraModeEnum.PHOTO.getMode())) {
+ if (!Objects.equals(cameraDTO.getCameraMode().getMode(), CameraModeEnum.VIDEO.getMode())) {
//切换模式
ResponseResult swResult = switchingMode(sn, CameraModeEnum.VIDEO, cameraDTO);
log.info("摄像头切换状态:{}", swResult);
@@ -149,7 +153,7 @@
break;
}
case "video_stop": {//结束录像
- if (Objects.equals(cameraDTO.getCameraMode().getMode(), CameraModeEnum.PHOTO.getMode())) {
+ if (!Objects.equals(cameraDTO.getCameraMode().getMode(), CameraModeEnum.VIDEO.getMode())) {
//切换模式
ResponseResult swResult = switchingMode(sn, CameraModeEnum.VIDEO, cameraDTO);
log.info("摄像头切换状态:{}", swResult);
@@ -162,7 +166,10 @@
return ResponseResult.error(-1, "未知类型!");
}
- return controlService.payloadCommands(param);
+
+ Thread.sleep(2000); // 延迟2000毫秒(2秒)
+
+ return controlService.payloadCommands(param,bid);
}
/**
diff --git a/src/main/java/com/dji/sample/control/service/impl/ControlServiceImpl.java b/src/main/java/com/dji/sample/control/service/impl/ControlServiceImpl.java
index 56955a2..8207d79 100644
--- a/src/main/java/com/dji/sample/control/service/impl/ControlServiceImpl.java
+++ b/src/main/java/com/dji/sample/control/service/impl/ControlServiceImpl.java
@@ -417,6 +417,22 @@
}
@Override
+ public ResponseResult payloadCommands(PayloadCommandsParam param, String bid) throws Exception {
+ param.getCmd().getClazz()
+ .getDeclaredConstructor(DronePayloadParam.class)
+ .newInstance(param.getData())
+ .checkCondition(param.getSn());
+
+ ResponseResult result = ResponseResult.success();
+ result.setTraceid(bid);
+
+ ServiceReply serviceReply = messageSenderService.publishServicesTopic(param.getSn(), param.getCmd().getCmd(), param.getData(),bid);
+ return ResponseResult.CODE_SUCCESS != serviceReply.getResult() ?
+ ResponseResult.error(serviceReply.getResult(), "错误码:" + serviceReply.getResult())
+ : result;
+ }
+
+ @Override
public ResponseResult requestsConfig(String sn, String method, RequestsParam param) {
ServiceReply serviceReply = messageSenderService.publishRequestsTopic(sn, method, param);
return ResponseResult.CODE_SUCCESS != serviceReply.getResult() ?
--
Gitblit v1.9.3