From 1157c58dc74805cbb7db57ab121bbb521f4c216b Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Fri, 25 Oct 2024 16:33:49 +0800
Subject: [PATCH] 增加 拍照 录像 相机模式设置
---
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java | 18 +++-
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDTO.java | 2
ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDTO.java | 2
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java | 40 +++++++--
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDTO.java | 2
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java | 4
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java | 4
ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDTO.java | 2
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java | 26 ++++--
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java | 4
ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDTO.java | 6 -
ard-work/src/main/java/com/ard/tianyu/controller/UavController.java | 22 ++---
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java | 5
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java | 33 ++++++++
ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java | 4
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CameraModeDTO.java | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java | 5
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java | 38 +++++++++
18 files changed, 160 insertions(+), 63 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java b/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
index 27bbf9f..3bc8b1b 100644
--- a/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
+++ b/ard-work/src/main/java/com/ard/tianyu/controller/UavController.java
@@ -4,11 +4,11 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
-import com.ard.tianyu.model.dto.camera.RecordDto;
-import com.ard.tianyu.model.dto.control.AbsAngleControlDto;
-import com.ard.tianyu.model.dto.control.AngleControlDto;
-import com.ard.tianyu.model.dto.control.SpeedControlDto;
+import com.ard.tianyu.model.dto.camera.CapturePicDTO;
+import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
+import com.ard.tianyu.model.dto.control.AngleControlDTO;
+import com.ard.tianyu.model.dto.control.SpeedControlDTO;
import com.ard.tianyu.model.dto.signal.SignalInfo;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
@@ -24,8 +24,6 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
import java.util.List;
/**
@@ -86,7 +84,7 @@
@ApiOperation(value = "云台转动(基于角度)", notes = "actionCode值:0-回中,1-上,2-右上,3-右,4-右下,5-下,6-左下,7-左,8-左上,254-停止")
@ApiOperationSupport(order = 1)
@PostMapping("/angleControl")
- public AjaxResult angleControl(@RequestBody AngleControlDto angleControlDto) {
+ public AjaxResult angleControl(@RequestBody AngleControlDTO angleControlDto) {
tyService.angleControl(angleControlDto);
return AjaxResult.success();
}
@@ -94,7 +92,7 @@
@ApiOperation(value = "云台绝对值控制(基于角度)", notes = "俯仰pitch范围:[-120°至+30°] 平移yaw范围:[-180°至+180°] 横滚roll范围:[-90°至+60°]")
@ApiOperationSupport(order = 2)
@PostMapping("/absAngleControl")
- public AjaxResult absAngleControl(@RequestBody @Validated AbsAngleControlDto angleControlDto) {
+ public AjaxResult absAngleControl(@RequestBody @Validated AbsAngleControlDTO angleControlDto) {
tyService.absAngleControl(angleControlDto);
return AjaxResult.success();
}
@@ -102,7 +100,7 @@
@ApiOperation(value = "云台转动(基于速度)", notes = "俯仰转动速度:上正下负 平移转动速度:右正左负 横滚转动速度:顺时针正,逆时针负")
@ApiOperationSupport(order = 3)
@PostMapping("/speedControl")
- public AjaxResult speedControl(@RequestBody @Validated SpeedControlDto speedControlDto) {
+ public AjaxResult speedControl(@RequestBody @Validated SpeedControlDTO speedControlDto) {
tyService.speedControl(speedControlDto);
return AjaxResult.success();
}
@@ -110,7 +108,7 @@
@ApiOperation("拍照")
@ApiOperationSupport(order = 4)
@PostMapping("/capturePicDto")
- public AjaxResult capturePic(@RequestBody CapturePicDto capturePicDto) {
+ public AjaxResult capturePic(@RequestBody CapturePicDTO capturePicDto) {
tyService.capturePic(capturePicDto);
return AjaxResult.success();
}
@@ -118,7 +116,7 @@
@ApiOperation("录像")
@ApiOperationSupport(order = 5)
@PostMapping("/record")
- public AjaxResult record(@RequestBody RecordDto recordDto) {
+ public AjaxResult record(@RequestBody RecordDTO recordDto) {
tyService.record(recordDto);
return AjaxResult.success();
}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CameraModeDTO.java
similarity index 79%
copy from ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java
copy to ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CameraModeDTO.java
index cee59f5..92f6a44 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CameraModeDTO.java
@@ -7,7 +7,7 @@
import org.springframework.validation.annotation.Validated;
/**
- * 录像实体对象
+ * 设置相机模式实体对象
*
* @author liusuyi
* @date 2024年10月25日13:32
@@ -17,7 +17,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Validated
-public class RecordDto {
+public class CameraModeDTO {
private String boxSn;
- private Boolean isRecord;
+ private Byte actionParam;
}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDTO.java
similarity index 92%
rename from ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java
rename to ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDTO.java
index 3532beb..cd9c582 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDTO.java
@@ -17,6 +17,6 @@
@AllArgsConstructor
@NoArgsConstructor
@Validated
-public class CapturePicDto {
+public class CapturePicDTO {
private String boxSn;
}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDTO.java
similarity index 94%
rename from ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java
rename to ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDTO.java
index cee59f5..25088ff 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDTO.java
@@ -17,7 +17,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Validated
-public class RecordDto {
+public class RecordDTO {
private String boxSn;
private Boolean isRecord;
}
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDTO.java
similarity index 96%
rename from ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDto.java
rename to ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDTO.java
index 978c561..2a68e80 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDTO.java
@@ -20,7 +20,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Validated
-public class AbsAngleControlDto {
+public class AbsAngleControlDTO {
private String boxSn;
@Min(value = -120, message = "俯仰角 (pitch) 最小值为 -120°")
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDTO.java
similarity index 95%
rename from ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDto.java
rename to ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDTO.java
index 6a7cdcc..4a1cf40 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDTO.java
@@ -20,7 +20,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Validated
-public class AngleControlDto {
+public class AngleControlDTO {
private String boxSn;
private Byte actionCode;
@Min(value = 0, message = "转动角度 最小值为 0")
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDTO.java
similarity index 75%
rename from ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDto.java
rename to ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDTO.java
index d673ae8..cecb79b 100644
--- a/ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDto.java
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDTO.java
@@ -4,10 +4,6 @@
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
/**
* AngleControlDto
@@ -19,7 +15,7 @@
@Builder
@AllArgsConstructor
@NoArgsConstructor
-public class SpeedControlDto {
+public class SpeedControlDTO {
private String boxSn;
/**
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java
new file mode 100644
index 0000000..da22f62
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeCommand.java
@@ -0,0 +1,38 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.CameraModeDTO;
+import com.ard.tianyu.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 设置相机模式指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class CameraModeCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x22; // 动作编号
+ private final byte actionParam; // 动作参数
+
+
+ public CameraModeCommand(CameraModeDTO cameraModeDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 19);
+ setBoxSn(cameraModeDTO.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ actionParam = cameraModeDTO.getActionParam();
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ out.writeByte(actionParam); // 写入动作参数
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java
new file mode 100644
index 0000000..6311b4f
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CameraModeReplyCommand.java
@@ -0,0 +1,33 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.CameraModeDTO;
+import com.ard.tianyu.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 设置相机模式回复指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class CameraModeReplyCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x22; // 动作编号
+ private final byte result; // 执行结果
+ private final Integer errorCode; // 错误码
+
+ public CameraModeReplyCommand(String boxSn,Byte result,Integer errorCode) {
+ setDataHeader((short) 0x6A77);
+ //setDataLength((short) 18);
+ setCmdCode((byte) 0xD1);
+ setBoxSn(boxSn.getBytes());
+ this.result = result;
+ this.errorCode = errorCode;
+ }
+
+ public void encode(ByteBuf out) {
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
index 7aeabdb..fb475fc 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
+import com.ard.tianyu.model.dto.camera.CapturePicDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -17,7 +17,7 @@
private final byte actionCode=0x23; // 动作编号
- public CapturePicCommand(CapturePicDto captureDto) {
+ public CapturePicCommand(CapturePicDTO captureDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(captureDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
index f3ab32a..61ad79d 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
@@ -1,7 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
-import com.ard.tianyu.model.dto.camera.RecordDto;
+import com.ard.tianyu.model.dto.camera.RecordDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -18,7 +17,7 @@
private final byte actionCode=0x24; // 动作编号
- public RecordStartCommand(RecordDto recordDto) {
+ public RecordStartCommand(RecordDTO recordDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(recordDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
index 91fc9a9..e30d328 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
@@ -1,7 +1,6 @@
package com.ard.tianyu.netty.command.camera;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
-import com.ard.tianyu.model.dto.camera.RecordDto;
+import com.ard.tianyu.model.dto.camera.RecordDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -18,7 +17,7 @@
private final byte actionCode = 0x25; // 动作编号
- public RecordStopCommand(RecordDto recordDto) {
+ public RecordStopCommand(RecordDTO recordDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 18);
setBoxSn(recordDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
index 9e39ac3..865b780 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.control;
-import com.ard.tianyu.model.dto.control.AbsAngleControlDto;
+import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -20,7 +20,7 @@
private final float yaw; // 平移
private final float roll; // 横滚
- public AbsAngleControlCommand(AbsAngleControlDto absAngleControlDto) {
+ public AbsAngleControlCommand(AbsAngleControlDTO absAngleControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 30);
setBoxSn(absAngleControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
index ddde4da..69b61ce 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.control;
-import com.ard.tianyu.model.dto.control.AngleControlDto;
+import com.ard.tianyu.model.dto.control.AngleControlDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -18,7 +18,7 @@
private final byte actionCode; // 动作编号
private final byte rotationAngle; // 转动角度
- public AngleControlCommand(AngleControlDto angleControlDto) {
+ public AngleControlCommand(AngleControlDTO angleControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 19);
setBoxSn(angleControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
index d4fbabf..f250e43 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
@@ -1,6 +1,6 @@
package com.ard.tianyu.netty.command.control;
-import com.ard.tianyu.model.dto.control.SpeedControlDto;
+import com.ard.tianyu.model.dto.control.SpeedControlDTO;
import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -22,7 +22,7 @@
private final short execTime = 200; // 执行时间
- public SpeedControlCommand(SpeedControlDto speedControlDto) {
+ public SpeedControlCommand(SpeedControlDTO speedControlDto) {
setDataHeader((short) 0x7479);
setDataLength((short) 32);
setBoxSn(speedControlDto.getBoxSn().getBytes());
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
index 4f88354..689ccc8 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java
@@ -1,6 +1,7 @@
package com.ard.tianyu.netty.handler;// MessageProtocolDecoder.java
import com.ard.tianyu.netty.command.*;
+import com.ard.tianyu.netty.command.camera.CameraModeReplyCommand;
import com.ard.tianyu.netty.command.camera.CapturePicReplyCommand;
import com.ard.tianyu.netty.command.camera.RecordStartReplyCommand;
import com.ard.tianyu.netty.command.camera.RecordStopReplyCommand;
@@ -83,21 +84,30 @@
byte encryptionFlag = in.readByte();
byte actionCode = in.readByte();
switch (actionCode) {
- case 0x23:
+ case 0x22:
byte result = in.readByte();
int errorCode = in.readInt();
uavData = new byte[15];
in.readBytes(uavData);
String boxSn = new String(uavData);
+ baseCommand = new CameraModeReplyCommand(boxSn, result, errorCode);
+ log.debug("设置相机模式回复: {}", boxSn);
+ break;
+ case 0x23:
+ result = in.readByte();
+ errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
baseCommand = new CapturePicReplyCommand(boxSn, result, errorCode);
log.debug("拍照回复: {}", boxSn);
break;
case 0x24:
- result = in.readByte();
- errorCode = in.readInt();
+ result = in.readByte();
+ errorCode = in.readInt();
uavData = new byte[15];
in.readBytes(uavData);
- boxSn = new String(uavData);
+ boxSn = new String(uavData);
baseCommand = new RecordStartReplyCommand(boxSn, result, errorCode);
log.debug("开始录像回复: {}", boxSn);
break;
diff --git a/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java b/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
index 3f50eb6..471f873 100644
--- a/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
+++ b/ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
@@ -3,11 +3,12 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
-import com.ard.tianyu.model.dto.camera.RecordDto;
-import com.ard.tianyu.model.dto.control.AbsAngleControlDto;
-import com.ard.tianyu.model.dto.control.AngleControlDto;
-import com.ard.tianyu.model.dto.control.SpeedControlDto;
+import com.ard.tianyu.model.dto.camera.CameraModeDTO;
+import com.ard.tianyu.model.dto.camera.CapturePicDTO;
+import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
+import com.ard.tianyu.model.dto.control.AngleControlDTO;
+import com.ard.tianyu.model.dto.control.SpeedControlDTO;
import com.ard.tianyu.model.dto.signal.SignalInfo;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
@@ -70,27 +71,32 @@
/**
* 云台转动(基于角度)
*/
- void angleControl(AngleControlDto angleControlDto);
+ void angleControl(AngleControlDTO angleControlDto);
/**
* 云台绝对值控制(基于角度)
*/
- void absAngleControl(AbsAngleControlDto absAngleControlDto);
+ void absAngleControl(AbsAngleControlDTO absAngleControlDto);
/**
* 云台转动(基于速度)
*/
- void speedControl(SpeedControlDto speedControlDto);
+ void speedControl(SpeedControlDTO speedControlDto);
+
+ /**
+ * 设置相机模式
+ */
+ void updateCameraMode(CameraModeDTO cameraModeDTO);
/**
* 拍照
*/
- void capturePic(CapturePicDto capturePicDto);
+ void capturePic(CapturePicDTO capturePicDto);
/**
* 录像
*/
- void record(RecordDto recordDto);
+ void record(RecordDTO recordDto);
/**
* 获取无人机状态
diff --git a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
index 66dacea..c056263 100644
--- a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
@@ -8,11 +8,12 @@
import com.ard.tianyu.model.dto.BoxHistoryDTO;
import com.ard.tianyu.model.dto.BoxPhotosDTO;
import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.CapturePicDto;
-import com.ard.tianyu.model.dto.camera.RecordDto;
-import com.ard.tianyu.model.dto.control.AbsAngleControlDto;
-import com.ard.tianyu.model.dto.control.AngleControlDto;
-import com.ard.tianyu.model.dto.control.SpeedControlDto;
+import com.ard.tianyu.model.dto.camera.CameraModeDTO;
+import com.ard.tianyu.model.dto.camera.CapturePicDTO;
+import com.ard.tianyu.model.dto.camera.RecordDTO;
+import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
+import com.ard.tianyu.model.dto.control.AngleControlDTO;
+import com.ard.tianyu.model.dto.control.SpeedControlDTO;
import com.ard.tianyu.model.dto.converter.UavSignalInfoConverter;
import com.ard.tianyu.model.dto.converter.UavStateConverter;
import com.ard.tianyu.model.dto.converter.UavTelemetryDataConverter;
@@ -34,7 +35,6 @@
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.hssf.record.Record;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@@ -165,7 +165,7 @@
* 云台控制基于角度
*/
@Override
- public void angleControl(AngleControlDto angleControlDto) {
+ public void angleControl(AngleControlDTO angleControlDto) {
AngleControlCommand controlAngleCommand = new AngleControlCommand(angleControlDto);
this.sendMessage(tyConfiguration.getIpPort(), controlAngleCommand);
}
@@ -174,7 +174,7 @@
* 云台绝对值控制(基于角度)
*/
@Override
- public void absAngleControl(AbsAngleControlDto absAngleControlDto) {
+ public void absAngleControl(AbsAngleControlDTO absAngleControlDto) {
AbsAngleControlCommand absAngleControlCommand = new AbsAngleControlCommand(absAngleControlDto);
this.sendMessage(tyConfiguration.getIpPort(), absAngleControlCommand);
}
@@ -183,16 +183,26 @@
* 云台转动(基于速度)
*/
@Override
- public void speedControl(SpeedControlDto speedControlDto) {
+ public void speedControl(SpeedControlDTO speedControlDto) {
SpeedControlCommand speedControlCommand = new SpeedControlCommand(speedControlDto);
this.sendMessage(tyConfiguration.getIpPort(), speedControlCommand);
+ }
+
+ /**
+ * 设置相机模式
+ */
+ @Override
+ public void updateCameraMode(CameraModeDTO cameraModeDTO) {
+ CameraModeCommand cameraModeCommand = new CameraModeCommand(cameraModeDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), cameraModeCommand);
}
/**
* 拍照
*/
@Override
- public void capturePic(CapturePicDto capturePicDto) {
+ public void capturePic(CapturePicDTO capturePicDto) {
+ updateCameraMode(CameraModeDTO.builder().boxSn(capturePicDto.getBoxSn()).actionParam((byte)0x01).build());
CapturePicCommand capturePicCommand = new CapturePicCommand(capturePicDto);
this.sendMessage(tyConfiguration.getIpPort(), capturePicCommand);
}
@@ -201,9 +211,10 @@
* 录像
*/
@Override
- public void record(RecordDto recordDto) {
+ public void record(RecordDTO recordDto) {
BaseCommand baseCommand;
if (recordDto.getIsRecord()) {
+ updateCameraMode(CameraModeDTO.builder().boxSn(recordDto.getBoxSn()).actionParam((byte)0x02).build());
baseCommand = new RecordStartCommand(recordDto);
} else {
baseCommand = new RecordStopCommand(recordDto);
@@ -291,6 +302,13 @@
log.info("收到无人机初始化详情-回复防止再次发送");
}
}
+ if (tyCommand instanceof CameraModeReplyCommand) {
+ CameraModeReplyCommand cameraModeReplyCommand = (CameraModeReplyCommand) tyCommand;
+ if (cameraModeReplyCommand.getActionCode() == (byte) 0x22) {
+ log.info("收到无人机设置相机模式回复:{} 错误码:{}", String.format("0x%02X", cameraModeReplyCommand.getResult() & 0xFF), cameraModeReplyCommand.getErrorCode());
+ }
+ }
+
if (tyCommand instanceof CapturePicReplyCommand) {
CapturePicReplyCommand capturePicReplyCommand = (CapturePicReplyCommand) tyCommand;
if (capturePicReplyCommand.getActionCode() == (byte) 0x23) {
--
Gitblit v1.9.3