package com.ard.work.component.netty.command.manual;
|
|
import com.ard.work.component.netty.command.BaseCmd;
|
import com.ard.work.domain.dto.manual.FlyPointControlDTO;
|
import com.ard.work.domain.dto.manual.FlyRoundControlDTO;
|
import io.netty.buffer.ByteBuf;
|
|
/**
|
* 环绕飞行控制指令
|
*
|
* @author liusuyi
|
* @date 2024年10月26日15:43
|
**/
|
public class FlyRoundControlCmd extends BaseCmd {
|
private final double longitude; // 兴趣点经度
|
private final double latitude; // 兴趣点纬度
|
private final float altitude; // 兴趣点高度
|
private final float height; // 飞行高度
|
private final float speed; // 环绕速度
|
private final float radius; // 环绕半径
|
private final byte flyMode; // 飞行模式
|
|
public FlyRoundControlCmd(FlyRoundControlDTO flyRoundControlDTO) {
|
setDataHeader((short) 0x7479);
|
setDataLength((short) 51);
|
setBoxSn(flyRoundControlDTO.getBoxSn().getBytes());
|
setCmdCode((byte) 0xD1);
|
this.longitude = flyRoundControlDTO.getLongitude();
|
this.latitude = flyRoundControlDTO.getLatitude();
|
this.altitude = flyRoundControlDTO.getAltitude();
|
this.height=flyRoundControlDTO.getHeight();
|
this.speed = flyRoundControlDTO.getSpeed();
|
this.radius= flyRoundControlDTO.getRadius();
|
this.flyMode = flyRoundControlDTO.getFlyMode();
|
}
|
|
|
public void encode(ByteBuf out) {
|
out.writeShort(getDataHeader()); // 写入数据头
|
out.writeShort(getDataLength()); // 写入数据长度
|
out.writeBytes(getBoxSn()); // 写入盒子SN
|
out.writeByte(getCmdCode()); // 写入命令码
|
out.writeByte(0x00); // 写入加密标志
|
out.writeByte(0x3B); // 写入动作编号
|
out.writeDouble(longitude); // 写入兴趣点经度
|
out.writeDouble(latitude); // 写入兴趣点纬度
|
out.writeFloat(altitude); // 写入兴趣点高度
|
out.writeFloat(height); // 写入飞行高度
|
out.writeFloat(speed); // 写入环绕速度
|
out.writeFloat(radius); // 写入环绕半径
|
out.writeByte(flyMode); // 写入飞行模式
|
}
|
}
|