From fddccbf217223e7287d6861c3020d9ba5cc15e55 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Fri, 25 Oct 2024 15:42:19 +0800
Subject: [PATCH] 优化
---
ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDto.java | 37 +++
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java | 38 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java | 5
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java | 87 ++++++
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java | 22 +
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java | 45 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDto.java | 29 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java | 20
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java | 32 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java | 36 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java | 32 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java | 36 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java | 23 +
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java | 35 ++
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java | 27 ++
ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java | 5
ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java | 3
ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java | 2
ard-work/src/main/java/com/ard/tianyu/controller/UavController.java | 50 +++
ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDto.java | 38 +++
ard-admin/src/main/resources/application-dev.yml | 6
ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java | 47 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java | 32 ++
28 files changed, 663 insertions(+), 39 deletions(-)
diff --git a/ard-admin/src/main/resources/application-dev.yml b/ard-admin/src/main/resources/application-dev.yml
index 985f949..2d9a8df 100644
--- a/ard-admin/src/main/resources/application-dev.yml
+++ b/ard-admin/src/main/resources/application-dev.yml
@@ -24,12 +24,12 @@
# 天宇服务器配置
tianyu:
# 天宇http服务器地址
- endpoint: 112.98.106.22:22000
+ endpoint: 112.98.106.22:12000
accesskeyid: qmfmd3Ws7M4dMcylnrTU
accesskeysecret: 5WBU2uEhHZaVefpZdaxpFh4LJW9fZZaa
# 天宇tcp服务器地址
tcpserver: 112.98.106.22
- tcpport: 23002
+ tcpport: 13002
# netty配置
netty:
tcp:
@@ -38,4 +38,4 @@
#流媒体配置
mediamtx:
# 流媒体服务器地址
- host: 192.168.1.27
+ host: 192.168.1.27
\ No newline at end of file
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 3f620f7..27bbf9f 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,6 +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.signal.SignalInfo;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
@@ -12,11 +17,15 @@
import com.ard.tianyu.model.receiver.BoxInfoReceiver;
import com.ard.tianyu.model.receiver.BoxStreamUrlReceiver;
import com.ard.tianyu.service.ITyService;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
import java.util.List;
/**
@@ -74,10 +83,43 @@
return AjaxResult.success(state);
}
- @ApiOperation("云台转动(基于角度)")
- @GetMapping("/controlAngle")
- public AjaxResult controlAngle(String boxSn,Integer actionId,Integer rotationAngle) {
- tyService.angleControl(boxSn,actionId,rotationAngle);
+ @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) {
+ tyService.angleControl(angleControlDto);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "云台绝对值控制(基于角度)", notes = "俯仰pitch范围:[-120°至+30°] 平移yaw范围:[-180°至+180°] 横滚roll范围:[-90°至+60°]")
+ @ApiOperationSupport(order = 2)
+ @PostMapping("/absAngleControl")
+ public AjaxResult absAngleControl(@RequestBody @Validated AbsAngleControlDto angleControlDto) {
+ tyService.absAngleControl(angleControlDto);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "云台转动(基于速度)", notes = "俯仰转动速度:上正下负 平移转动速度:右正左负 横滚转动速度:顺时针正,逆时针负")
+ @ApiOperationSupport(order = 3)
+ @PostMapping("/speedControl")
+ public AjaxResult speedControl(@RequestBody @Validated SpeedControlDto speedControlDto) {
+ tyService.speedControl(speedControlDto);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation("拍照")
+ @ApiOperationSupport(order = 4)
+ @PostMapping("/capturePicDto")
+ public AjaxResult capturePic(@RequestBody CapturePicDto capturePicDto) {
+ tyService.capturePic(capturePicDto);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation("录像")
+ @ApiOperationSupport(order = 5)
+ @PostMapping("/record")
+ 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/CapturePicDto.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java
new file mode 100644
index 0000000..3532beb
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/CapturePicDto.java
@@ -0,0 +1,22 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * 拍照实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+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
new file mode 100644
index 0000000..cee59f5
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/camera/RecordDto.java
@@ -0,0 +1,23 @@
+package com.ard.tianyu.model.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * 录像实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+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
new file mode 100644
index 0000000..978c561
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AbsAngleControlDto.java
@@ -0,0 +1,37 @@
+package com.ard.tianyu.model.dto.control;
+
+import lombok.AllArgsConstructor;
+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
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+public class AbsAngleControlDto {
+ private String boxSn;
+
+ @Min(value = -120, message = "俯仰角 (pitch) 最小值为 -120°")
+ @Max(value = 30, message = "俯仰角 (pitch) 最大值为 30°")
+ private float pitch; // 俯仰角
+
+ @Min(value = -180, message = "偏航角 (yaw) 最小值为 -180°")
+ @Max(value = 180, message = "偏航角 (yaw) 最大值为 180°")
+ private float yaw; // 偏航角
+
+ @Min(value = -90, message = "横滚角 (roll) 最小值为 -90°")
+ @Max(value = 60, message = "横滚角 (roll) 最大值为 60°")
+ private float roll;
+}
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
new file mode 100644
index 0000000..6a7cdcc
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/AngleControlDto.java
@@ -0,0 +1,29 @@
+package com.ard.tianyu.model.dto.control;
+
+import lombok.AllArgsConstructor;
+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
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+public class AngleControlDto {
+ private String boxSn;
+ private Byte actionCode;
+ @Min(value = 0, message = "转动角度 最小值为 0")
+ @Max(value = 255, message = "转动角度 最大值为 255")
+ private Byte rotationAngle;
+}
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
new file mode 100644
index 0000000..d673ae8
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/control/SpeedControlDto.java
@@ -0,0 +1,38 @@
+package com.ard.tianyu.model.dto.control;
+
+import lombok.AllArgsConstructor;
+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
+ *
+ * @author liusuyi
+ * @date 2024年10月25日13:32
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class SpeedControlDto {
+ private String boxSn;
+
+ /**
+ * 俯仰转动速度
+ */
+ private float pitchSpeed;
+ /**
+ * 平移转动速度
+ */
+ private float yawSpeed;
+ /**
+ * 横滚转动速度
+ */
+ private float rollSpeed;
+
+}
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
new file mode 100644
index 0000000..7aeabdb
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicCommand.java
@@ -0,0 +1,35 @@
+package com.ard.tianyu.netty.command.camera;
+
+import com.ard.tianyu.model.dto.camera.CapturePicDto;
+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 CapturePicCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode=0x23; // 动作编号
+
+
+ public CapturePicCommand(CapturePicDto captureDto) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 18);
+ setBoxSn(captureDto.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java
new file mode 100644
index 0000000..aa3b550
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/CapturePicReplyCommand.java
@@ -0,0 +1,32 @@
+package com.ard.tianyu.netty.command.camera;
+
+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 CapturePicReplyCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x23; // 动作编号
+ private final byte result; // 执行结果
+ private final Integer errorCode; // 错误码
+
+ public CapturePicReplyCommand(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/RecordStartCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
new file mode 100644
index 0000000..f3ab32a
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartCommand.java
@@ -0,0 +1,36 @@
+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.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 开始录像指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class RecordStartCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode=0x24; // 动作编号
+
+
+ public RecordStartCommand(RecordDto recordDto) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 18);
+ setBoxSn(recordDto.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java
new file mode 100644
index 0000000..6c12116
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStartReplyCommand.java
@@ -0,0 +1,32 @@
+package com.ard.tianyu.netty.command.camera;
+
+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 RecordStartReplyCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x24; // 动作编号
+ private final byte result; // 执行结果
+ private final Integer errorCode; // 错误码
+
+ public RecordStartReplyCommand(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/RecordStopCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
new file mode 100644
index 0000000..91fc9a9
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopCommand.java
@@ -0,0 +1,36 @@
+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.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 停止录像指令
+ *
+ * @author liusuyi
+ * @date 2024年10月25日14:44
+ **/
+@Data
+public class RecordStopCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x25; // 动作编号
+
+
+ public RecordStopCommand(RecordDto recordDto) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 18);
+ setBoxSn(recordDto.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ }
+
+ public void encode(ByteBuf out) {
+ out.writeShort(getDataHeader()); // 写入数据头
+ out.writeShort(getDataLength()); // 写入数据长度
+ out.writeBytes(getBoxSn()); // 写入盒子SN
+ out.writeByte(getCmdCode()); // 写入命令码
+ out.writeByte(encryptFlag); // 写入加密标志
+ out.writeByte(actionCode); // 写入动作编号
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java
new file mode 100644
index 0000000..b11bee7
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/camera/RecordStopReplyCommand.java
@@ -0,0 +1,32 @@
+package com.ard.tianyu.netty.command.camera;
+
+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 RecordStopReplyCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x25; // 动作编号
+ private final byte result; // 执行结果
+ private final Integer errorCode; // 错误码
+
+ public RecordStopReplyCommand(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/control/AbsAngleControlCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
new file mode 100644
index 0000000..9e39ac3
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AbsAngleControlCommand.java
@@ -0,0 +1,45 @@
+package com.ard.tianyu.netty.command.control;
+
+import com.ard.tianyu.model.dto.control.AbsAngleControlDto;
+import com.ard.tianyu.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 云台绝对值控制(基于角度)命令
+ *
+ * @author 刘苏义
+ * @date 2024/10/22 16:36
+ */
+
+@Data
+public class AbsAngleControlCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x09; // 动作编号
+ private final float pitch; // 俯仰
+ private final float yaw; // 平移
+ private final float roll; // 横滚
+
+ public AbsAngleControlCommand(AbsAngleControlDto absAngleControlDto) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 30);
+ setBoxSn(absAngleControlDto.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.pitch = absAngleControlDto.getPitch();
+ this.yaw = absAngleControlDto.getYaw();
+ this.roll = absAngleControlDto.getRoll();
+
+ }
+
+ 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.writeFloat(pitch); // 写入转动角度
+ out.writeFloat(yaw); // 写入转动角度
+ out.writeFloat(roll); // 写入转动角度
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/ControlAngleCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
similarity index 60%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/ControlAngleCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
index 694e9f4..ddde4da 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/ControlAngleCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/AngleControlCommand.java
@@ -1,5 +1,7 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.control;
+import com.ard.tianyu.model.dto.control.AngleControlDto;
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
@@ -11,20 +13,18 @@
*/
@Data
-public class ControlAngleCommand extends BaseCommand {
- private final byte encryptFlag; // 加密标志
+public class AngleControlCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
private final byte actionCode; // 动作编号
private final byte rotationAngle; // 转动角度
- public ControlAngleCommand(String boxSn, byte actionCode, byte rotationAngle) {
+ public AngleControlCommand(AngleControlDto angleControlDto) {
setDataHeader((short) 0x7479);
- setDataLength((short)19);
- setBoxSn(boxSn.getBytes());
+ setDataLength((short) 19);
+ setBoxSn(angleControlDto.getBoxSn().getBytes());
setCmdCode((byte) 0xD1);
-
- this.encryptFlag = 0x00;
- this.actionCode = actionCode;
- this.rotationAngle = rotationAngle;
+ this.actionCode = angleControlDto.getActionCode();
+ this.rotationAngle = angleControlDto.getRotationAngle();
}
public void encode(ByteBuf out) {
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
new file mode 100644
index 0000000..d4fbabf
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/control/SpeedControlCommand.java
@@ -0,0 +1,47 @@
+package com.ard.tianyu.netty.command.control;
+
+import com.ard.tianyu.model.dto.control.SpeedControlDto;
+import com.ard.tianyu.netty.command.BaseCommand;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 云台绝对值控制(基于角度)命令
+ *
+ * @author 刘苏义
+ * @date 2024/10/22 16:36
+ */
+
+@Data
+public class SpeedControlCommand extends BaseCommand {
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = (byte) 0xF4; // 动作编号
+ private final float pitchSpeed; // 俯仰转速
+ private final float yawSpeed; // 平移转速
+ private final float rollSpeed; // 横滚转速
+ private final short execTime = 200; // 执行时间
+
+
+ public SpeedControlCommand(SpeedControlDto speedControlDto) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 32);
+ setBoxSn(speedControlDto.getBoxSn().getBytes());
+ setCmdCode((byte) 0xD1);
+ this.pitchSpeed = speedControlDto.getPitchSpeed();
+ this.yawSpeed = speedControlDto.getYawSpeed();
+ this.rollSpeed = speedControlDto.getRollSpeed();
+ }
+
+ 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.writeFloat(pitchSpeed); // 写入转动角度
+ out.writeFloat(yawSpeed); // 写入转动角度
+ out.writeFloat(rollSpeed); // 写入转动角度
+ out.writeShort(execTime); // 写入执行时间
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/SignalInfoCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java
similarity index 88%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/SignalInfoCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java
index db4e295..751ffe9 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/SignalInfoCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/SignalInfoCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.real;
+import com.ard.tianyu.netty.command.BaseCommand;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import lombok.Data;
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavStateCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java
similarity index 94%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/UavStateCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java
index 5e7eff2..7df96fb 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavStateCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavStateCommand.java
@@ -1,4 +1,4 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.real;
import com.ard.tianyu.netty.command.BaseCommand;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavTelemetryDataCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java
similarity index 84%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/UavTelemetryDataCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java
index 6ecd1fa..c520cd3 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavTelemetryDataCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/real/UavTelemetryDataCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.real;
+import com.ard.tianyu.netty.command.BaseCommand;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
@@ -9,7 +10,7 @@
* @author liusuyi
* @date 2024年10月23日9:33
**/
-public class UavTelemetryDataCommand extends BaseCommand{
+public class UavTelemetryDataCommand extends BaseCommand {
private TelemetryDataPB.TelemetryData telemetryData;
// 构造函数
public UavTelemetryDataCommand(TelemetryDataPB.TelemetryData telemetryData) {
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java
similarity index 87%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java
index 10d61a3..bca0ea3 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.register;
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
/**
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java
similarity index 83%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java
index bbb9b6f..19dfa4d 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/HeartbeatReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/HeartbeatReplyCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.register;
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -27,6 +28,6 @@
out.writeShort(getDataHeader()); // 写入数据头
out.writeShort(getDataLength()); // 写入数据长度
out.writeByte(getCmdCode()); // 写入命令码
- out.writeLong(timestamp); // 写入时间戳
+ out.writeLong(timestamp); // 写入时间戳
}
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java
similarity index 88%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java
index 2de1337..dfebbfb 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;// RegisterMessage.java
+package com.ard.tianyu.netty.command.register;// RegisterMessage.java
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
/**
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterReplyCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java
similarity index 86%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterReplyCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java
index 0eff2c3..159b2da 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterReplyCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/RegisterReplyCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;// RegisterMessage.java
+package com.ard.tianyu.netty.command.register;// RegisterMessage.java
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavInitInfoCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java
similarity index 92%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/UavInitInfoCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java
index 9944dd5..ec2b494 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavInitInfoCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavInitInfoCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.register;
+import com.ard.tianyu.netty.command.BaseCommand;
import io.netty.buffer.ByteBuf;
import lombok.Data;
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavReadyNotificationCommand.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java
similarity index 89%
rename from ard-work/src/main/java/com/ard/tianyu/netty/command/UavReadyNotificationCommand.java
rename to ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java
index 338e530..25de8fb 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/UavReadyNotificationCommand.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/register/UavReadyNotificationCommand.java
@@ -1,5 +1,6 @@
-package com.ard.tianyu.netty.command;
+package com.ard.tianyu.netty.command.register;
+import com.ard.tianyu.netty.command.BaseCommand;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import lombok.Data;
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 ac924b9..4f88354 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,15 @@
package com.ard.tianyu.netty.handler;// MessageProtocolDecoder.java
import com.ard.tianyu.netty.command.*;
+import com.ard.tianyu.netty.command.camera.CapturePicReplyCommand;
+import com.ard.tianyu.netty.command.camera.RecordStartReplyCommand;
+import com.ard.tianyu.netty.command.camera.RecordStopReplyCommand;
+import com.ard.tianyu.netty.command.real.SignalInfoCommand;
+import com.ard.tianyu.netty.command.real.UavStateCommand;
+import com.ard.tianyu.netty.command.real.UavTelemetryDataCommand;
+import com.ard.tianyu.netty.command.register.HeartbeatReplyCommand;
+import com.ard.tianyu.netty.command.register.RegisterReplyCommand;
+import com.ard.tianyu.netty.command.register.UavReadyNotificationCommand;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -74,12 +83,39 @@
byte encryptionFlag = in.readByte();
byte actionCode = in.readByte();
switch (actionCode) {
+ case 0x23:
+ byte result = in.readByte();
+ int errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ String boxSn = new String(uavData);
+ baseCommand = new CapturePicReplyCommand(boxSn, result, errorCode);
+ log.debug("拍照回复: {}", boxSn);
+ break;
+ case 0x24:
+ result = in.readByte();
+ errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
+ baseCommand = new RecordStartReplyCommand(boxSn, result, errorCode);
+ log.debug("开始录像回复: {}", boxSn);
+ break;
+ case 0x25:
+ result = in.readByte();
+ errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
+ baseCommand = new RecordStopReplyCommand(boxSn, result, errorCode);
+ log.debug("停止录像回复: {}", boxSn);
+ break;
case 0x42:
byte[] uavData1 = new byte[dataLength - 18];
in.readBytes(uavData1);
byte[] uavData2 = new byte[15];
in.readBytes(uavData2);
- String boxSn = new String(uavData2);
+ boxSn = new String(uavData2);
TelemetryDataPB.UavInitInfo uavInitInfo = TelemetryDataPB.UavInitInfo.parseFrom(uavData1);
baseCommand = new UavReadyNotificationCommand(boxSn, uavInitInfo, actionCode);
log.debug("无人机初始化数据: {}", boxSn);
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 b5cd2e8..3f50eb6 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,6 +3,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.signal.SignalInfo;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
@@ -65,9 +70,27 @@
/**
* 云台转动(基于角度)
*/
- void angleControl(String boxSn, Integer actionId, Integer rotationAngle);
+ void angleControl(AngleControlDto angleControlDto);
- void absAngleControl(String boxSn, Integer actionId, float pitch, float yaw, float roll);
+ /**
+ * 云台绝对值控制(基于角度)
+ */
+ void absAngleControl(AbsAngleControlDto absAngleControlDto);
+
+ /**
+ * 云台转动(基于速度)
+ */
+ void speedControl(SpeedControlDto speedControlDto);
+
+ /**
+ * 拍照
+ */
+ void capturePic(CapturePicDto capturePicDto);
+
+ /**
+ * 录像
+ */
+ 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 b9f8059..66dacea 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,6 +8,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.converter.UavSignalInfoConverter;
import com.ard.tianyu.model.dto.converter.UavStateConverter;
import com.ard.tianyu.model.dto.converter.UavTelemetryDataConverter;
@@ -17,10 +22,19 @@
import com.ard.tianyu.model.receiver.*;
import com.ard.tianyu.netty.command.*;
import com.ard.tianyu.netty.TyNettyTcpClient;
+import com.ard.tianyu.netty.command.camera.*;
+import com.ard.tianyu.netty.command.control.AbsAngleControlCommand;
+import com.ard.tianyu.netty.command.control.AngleControlCommand;
+import com.ard.tianyu.netty.command.control.SpeedControlCommand;
+import com.ard.tianyu.netty.command.real.SignalInfoCommand;
+import com.ard.tianyu.netty.command.real.UavStateCommand;
+import com.ard.tianyu.netty.command.real.UavTelemetryDataCommand;
+import com.ard.tianyu.netty.command.register.*;
import com.ard.tianyu.service.ITyService;
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;
@@ -151,14 +165,50 @@
* 云台控制基于角度
*/
@Override
- public void angleControl(String boxSn, Integer actionId, Integer rotationAngle) {
- ControlAngleCommand controlAngleCommand = new ControlAngleCommand(boxSn, actionId.byteValue(), rotationAngle.byteValue());
+ public void angleControl(AngleControlDto angleControlDto) {
+ AngleControlCommand controlAngleCommand = new AngleControlCommand(angleControlDto);
this.sendMessage(tyConfiguration.getIpPort(), controlAngleCommand);
}
+ /**
+ * 云台绝对值控制(基于角度)
+ */
@Override
- public void absAngleControl(String boxSn, Integer actionId, float pitch, float yaw, float roll) {
+ public void absAngleControl(AbsAngleControlDto absAngleControlDto) {
+ AbsAngleControlCommand absAngleControlCommand = new AbsAngleControlCommand(absAngleControlDto);
+ this.sendMessage(tyConfiguration.getIpPort(), absAngleControlCommand);
+ }
+ /**
+ * 云台转动(基于速度)
+ */
+ @Override
+ public void speedControl(SpeedControlDto speedControlDto) {
+ SpeedControlCommand speedControlCommand = new SpeedControlCommand(speedControlDto);
+ this.sendMessage(tyConfiguration.getIpPort(), speedControlCommand);
+ }
+
+ /**
+ * 拍照
+ */
+ @Override
+ public void capturePic(CapturePicDto capturePicDto) {
+ CapturePicCommand capturePicCommand = new CapturePicCommand(capturePicDto);
+ this.sendMessage(tyConfiguration.getIpPort(), capturePicCommand);
+ }
+
+ /**
+ * 录像
+ */
+ @Override
+ public void record(RecordDto recordDto) {
+ BaseCommand baseCommand;
+ if (recordDto.getIsRecord()) {
+ baseCommand = new RecordStartCommand(recordDto);
+ } else {
+ baseCommand = new RecordStopCommand(recordDto);
+ }
+ this.sendMessage(tyConfiguration.getIpPort(), baseCommand);
}
/**
@@ -233,11 +283,32 @@
break;
case (byte) 0xD1:
// 处理无人机
- UavReadyNotificationCommand droneReadyNotificationCommand = (UavReadyNotificationCommand) tyCommand;
- if (droneReadyNotificationCommand.getActionCode() == (byte) 0x42) {
- UavInitInfoCommand uavInitCommand = new UavInitInfoCommand(droneReadyNotificationCommand.getBoxSn());
- this.sendMessage(tyConfiguration.getIpPort(), uavInitCommand);
- log.info("收到无人机初始化详情-回复防止再次发送");
+ if (tyCommand instanceof UavReadyNotificationCommand) {
+ UavReadyNotificationCommand droneReadyNotificationCommand = (UavReadyNotificationCommand) tyCommand;
+ if (droneReadyNotificationCommand.getActionCode() == (byte) 0x42) {
+ UavInitInfoCommand uavInitCommand = new UavInitInfoCommand(droneReadyNotificationCommand.getBoxSn());
+ this.sendMessage(tyConfiguration.getIpPort(), uavInitCommand);
+ log.info("收到无人机初始化详情-回复防止再次发送");
+ }
+ }
+ if (tyCommand instanceof CapturePicReplyCommand) {
+ CapturePicReplyCommand capturePicReplyCommand = (CapturePicReplyCommand) tyCommand;
+ if (capturePicReplyCommand.getActionCode() == (byte) 0x23) {
+ log.info("收到无人机拍照回复:{} 错误码:{}", String.format("0x%02X", capturePicReplyCommand.getResult() & 0xFF), capturePicReplyCommand.getErrorCode());
+ }
+ }
+
+ if (tyCommand instanceof RecordStartReplyCommand) {
+ RecordStartReplyCommand recordStartReplyCommand = (RecordStartReplyCommand) tyCommand;
+ if (recordStartReplyCommand.getActionCode() == (byte) 0x24) {
+ log.info("收到无人机开始录像回复:{} 错误码:{}", String.format("0x%02X", recordStartReplyCommand.getResult() & 0xFF), recordStartReplyCommand.getErrorCode());
+ }
+ }
+ if (tyCommand instanceof RecordStopReplyCommand) {
+ RecordStopReplyCommand recordStopReplyCommand = (RecordStopReplyCommand) tyCommand;
+ if (recordStopReplyCommand.getActionCode() == (byte) 0x25) {
+ log.info("收到无人机停止录像回复:{} 错误码:{}", String.format("0x%02X", recordStopReplyCommand.getResult() & 0xFF), recordStopReplyCommand.getErrorCode());
+ }
}
break;
default:
--
Gitblit v1.9.3