liusuyi
2024-10-26 b9f46001860bf194601b4bdf848545bfc72eefa5
增加:返航
3 files added
6 files modified
140 ■■■■■ changed files
ard-work/src/main/java/com/ard/tianyu/controller/UavManualFlyController.java 9 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java 25 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java 34 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java 34 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffCmd.java 2 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/TakeOffReplyCmd.java 2 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java 10 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java 5 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
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();
    }
}
ard-work/src/main/java/com/ard/tianyu/model/dto/manual/ReturnHomeDTO.java
New file
@@ -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;
}
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeCmd.java
New file
@@ -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);          // 写入动作编号
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/manual/ReturnHomeReplyCmd.java
New file
@@ -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) {
    }
}
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
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
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();
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);
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:
                // 处理其他消息