From b9f46001860bf194601b4bdf848545bfc72eefa5 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 26 Oct 2024 16:59:35 +0800
Subject: [PATCH] 增加:返航
---
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java | 10 +++
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java | 19 +++++-
ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java | 25 ++++++++
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java | 34 +++++++++++
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java | 2
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java | 5 +
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java | 34 +++++++++++
ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java | 9 +++
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java | 2
9 files changed, 135 insertions(+), 5 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java b/ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java
index 808295a..d90cab3 100644
--- a/ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java
+++ b/ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java
@@ -1,6 +1,7 @@
package com.ard.tianyu.controller;
import com.ard.common.core.domain.AjaxResult;
+import com.ard.tianyu.model.dto.manual.ReturnHomeDTO;
import com.ard.tianyu.model.dto.manual.SwitchUavControlDTO;
import com.ard.tianyu.model.dto.manual.TakeOffDTO;
import com.ard.tianyu.service.ITyService;
@@ -39,4 +40,12 @@
tyService.takeOff(takeOffDTO);
return AjaxResult.success();
}
+
+ @ApiOperation("返航")
+ @ApiOperationSupport(order = 3)
+ @PostMapping("/returnHome")
+ public AjaxResult returnHome(@RequestBody ReturnHomeDTO returnHomeDTO) {
+ tyService.returnHome(returnHomeDTO);
+ return AjaxResult.success();
+ }
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java b/ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java
new file mode 100644
index 0000000..fa22f5a
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java
@@ -0,0 +1,25 @@
+package com.ard.tianyu.model.dto.manual;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.DecimalMax;
+import javax.validation.constraints.DecimalMin;
+
+/**
+ * 返航实体对象
+ *
+ * @author liusuyi
+ * @date 2024年10月26日9:02
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Validated
+public class ReturnHomeDTO {
+ private String boxSn;
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java
new file mode 100644
index 0000000..236b3e8
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java
@@ -0,0 +1,34 @@
+package com.ard.tianyu.netty.command.manual;
+
+import com.ard.tianyu.model.dto.manual.ReturnHomeDTO;
+import com.ard.tianyu.model.dto.manual.TakeOffDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 返航指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日15:43
+ **/
+public class ReturnHomeCmd extends BaseCmd {
+
+
+ public ReturnHomeCmd(ReturnHomeDTO returnHomeDTO) {
+ setDataHeader((short) 0x7479);
+ setDataLength((short) 18);
+ setBoxSn(returnHomeDTO.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(0x00); // 写入加密标志
+ out.writeByte(0x12); // 写入动作编号
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java
new file mode 100644
index 0000000..b9168da
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java
@@ -0,0 +1,34 @@
+package com.ard.tianyu.netty.command.manual;
+
+import com.ard.tianyu.model.dto.manual.ReturnHomeDTO;
+import com.ard.tianyu.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 返航回复指令
+ *
+ * @author liusuyi
+ * @date 2024年10月26日15:43
+ **/
+@Data
+public class ReturnHomeReplyCmd extends BaseCmd {
+
+ private final byte encryptFlag = 0x00; // 加密标志
+ private final byte actionCode = 0x12; // 动作编号
+ private final byte result; // 执行结果
+ private final Integer errorCode; // 错误码
+
+ public ReturnHomeReplyCmd(String boxSn, Byte result, Integer errorCode) {
+ setDataHeader((short) 0x6A77);
+ setDataLength((short) 23);
+ setBoxSn(boxSn.getBytes());
+ setCmdCode((byte) 0xD1);
+ this.result = result;
+ this.errorCode = errorCode;
+ }
+
+ public void encode(ByteBuf out) {
+
+ }
+}
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java
index 4dea279..02ffeff 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java
@@ -5,7 +5,7 @@
import io.netty.buffer.ByteBuf;
/**
- * 起飞
+ * 起飞指令
*
* @author liusuyi
* @date 2024年10月26日15:43
diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java
index bc4c221..02ceabe 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java
@@ -5,7 +5,7 @@
import lombok.Data;
/**
- * 起飞
+ * 起飞回复指令
*
* @author liusuyi
* @date 2024年10月26日15:43
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 0d20128..10b9d63 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
@@ -5,6 +5,7 @@
import com.ard.tianyu.netty.command.camera.CapturePicReplyCmd;
import com.ard.tianyu.netty.command.camera.RecordStartReplyCmd;
import com.ard.tianyu.netty.command.camera.RecordStopReplyCmd;
+import com.ard.tianyu.netty.command.manual.ReturnHomeReplyCmd;
import com.ard.tianyu.netty.command.manual.TakeOffReplyCmd;
import com.ard.tianyu.netty.command.notice.BoxPowerStatusReplyCmd;
import com.ard.tianyu.netty.command.notice.FlyWayEndReplyCmd;
@@ -102,6 +103,15 @@
baseCmd = new TakeOffReplyCmd(boxSn, result, errorCode);
log.debug("起飞回复: {}", boxSn);
break;
+ case 0x12:
+ result = in.readByte();
+ errorCode = in.readInt();
+ uavData = new byte[15];
+ in.readBytes(uavData);
+ boxSn = new String(uavData);
+ baseCmd = new ReturnHomeReplyCmd(boxSn, result, errorCode);
+ log.debug("返航回复: {}", boxSn);
+ break;
case 0x22:
result = in.readByte();
errorCode = in.readInt();
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 b304b82..2308965 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
@@ -7,6 +7,7 @@
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.manual.ReturnHomeDTO;
import com.ard.tianyu.model.dto.manual.SwitchUavControlDTO;
import com.ard.tianyu.model.dto.manual.TakeOffDTO;
import com.ard.tianyu.model.dto.signal.SignalInfo;
@@ -134,6 +135,10 @@
void takeOff(TakeOffDTO takeOffDTO);
/**
+ * 返航
+ */
+ void returnHome(ReturnHomeDTO returnHomeDTO);
+ /**
* 获取无人机状态
*/
UavState getUavState(String boxSn);
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 1a3c1cd..1525c4d 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
@@ -15,6 +15,7 @@
import com.ard.tianyu.model.dto.converter.UavSignalInfoConverter;
import com.ard.tianyu.model.dto.converter.UavStateConverter;
import com.ard.tianyu.model.dto.converter.UavTelemetryDataConverter;
+import com.ard.tianyu.model.dto.manual.ReturnHomeDTO;
import com.ard.tianyu.model.dto.manual.SwitchUavControlDTO;
import com.ard.tianyu.model.dto.manual.TakeOffDTO;
import com.ard.tianyu.model.dto.signal.SignalInfo;
@@ -27,9 +28,7 @@
import com.ard.tianyu.netty.command.control.AbsAngleControlCmd;
import com.ard.tianyu.netty.command.control.AngleControlCmd;
import com.ard.tianyu.netty.command.control.SpeedControlCmd;
-import com.ard.tianyu.netty.command.manual.SwitchUavControlCmd;
-import com.ard.tianyu.netty.command.manual.TakeOffCmd;
-import com.ard.tianyu.netty.command.manual.TakeOffReplyCmd;
+import com.ard.tianyu.netty.command.manual.*;
import com.ard.tianyu.netty.command.notice.BoxPowerStatusReplyCmd;
import com.ard.tianyu.netty.command.notice.FlyWayEndReplyCmd;
import com.ard.tianyu.netty.command.notice.UavReadyReplyCmd;
@@ -291,6 +290,15 @@
}
/**
+ * 返航
+ */
+ @Override
+ public void returnHome(ReturnHomeDTO returnHomeDTO) {
+ ReturnHomeCmd returnHomeCmd=new ReturnHomeCmd(returnHomeDTO);
+ this.sendMessage(tyConfiguration.getIpPort(), returnHomeCmd);
+ }
+
+ /**
* 获取无人机状态
*/
@Override
@@ -405,6 +413,11 @@
TakeOffReplyCmd takeOffReplyCommand = (TakeOffReplyCmd) tyCommand;
log.info("收到无人机起飞回复:{} 错误码:{}", String.format("0x%02X", takeOffReplyCommand.getResult() & 0xFF), takeOffReplyCommand.getErrorCode());
}
+ //返航回复
+ if (tyCommand instanceof ReturnHomeReplyCmd) {
+ ReturnHomeReplyCmd returnHomeReplyCmd = (ReturnHomeReplyCmd) tyCommand;
+ log.info("收到无人机返航回复:{} 错误码:{}", String.format("0x%02X", returnHomeReplyCmd.getResult() & 0xFF), returnHomeReplyCmd.getErrorCode());
+ }
break;
default:
// 处理其他消息
--
Gitblit v1.9.3