From 4c66e35afa9e9ecb31d1cc1705147f8a2d35f24a Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 23 Oct 2024 11:16:56 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ard/tianyu/netty/handler/MessageProtocolDecoder.java |    8 +++-----
 ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java           |   10 ++++++++--
 ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterReplyCommand.java   |   30 ++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 7 deletions(-)

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/RegisterReplyCommand.java
new file mode 100644
index 0000000..93fa4ee
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/command/RegisterReplyCommand.java
@@ -0,0 +1,30 @@
+package com.ard.tianyu.netty.command;// RegisterMessage.java
+
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+
+/**
+ * 注册命令
+ *
+ * @author 刘苏义
+ * @date 2024/10/22 16:36
+ */
+@Data
+public class RegisterReplyCommand extends BaseCommand {
+    private byte success;
+
+    public RegisterReplyCommand(byte success) {
+        setDataHeader((short) 0x6A77); // 设置帧头
+        setDataLength((short) (6)); // 数据长度
+        setCmdCode((byte) 0x01); // 设置命令编号
+        this.success = success;
+    }
+
+    @Override
+    public void encode(ByteBuf out) {
+        out.writeShort(getDataHeader());    // 写入帧头
+        out.writeShort(getDataLength());    // 写入数据长度
+        out.writeByte(getCmdCode());        // 写入指令编号
+        out.writeByte(success);             // 写入用户编号
+    }
+}
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 795bffb..4dcb9e0 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,9 +1,6 @@
 package com.ard.tianyu.netty.handler;// MessageProtocolDecoder.java
 
-import com.ard.tianyu.netty.command.BaseCommand;
-import com.ard.tianyu.netty.command.HeartbeatReplyCommand;
-import com.ard.tianyu.netty.command.UavDataCommand;
-import com.ard.tianyu.netty.command.UavStateCommand;
+import com.ard.tianyu.netty.command.*;
 import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.ChannelHandlerContext;
@@ -38,11 +35,12 @@
             case 0x01:
                 byte success = in.readByte(); // 读取是否成功
                 log.warn("注册回复: {}", success == 0x01 ? "成功" : "失败");
+                baseCommand = new RegisterReplyCommand(success);
                 break;
             case 0x02:
                 long timestamp = in.readLong(); // 读取时间戳
                 baseCommand = new HeartbeatReplyCommand(timestamp);
-                log.warn("心跳回复: 时间戳 {}", timestamp);
+                log.debug("心跳回复: 时间戳 {}", timestamp);
                 break;
             case (byte) 0xA8:
                 byte[] uavStatus = new byte[dataLength - 1];
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 98c5c51..b18e6d8 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
@@ -133,7 +133,7 @@
                 ByteBuf buffer = Unpooled.buffer();
                 msg.encode(buffer); // 确保对消息进行编码
                 channel.writeAndFlush(buffer); // 发送编码后的数据
-                log.info("向天宇服务器【{}:{}】发送数据,命令码:{}", host, port, String.format("0x%02X", msg.getCmdCode() & 0xFF));
+                log.debug("向天宇服务器【{}:{}】发送数据,命令码:{}", host, port, String.format("0x%02X", msg.getCmdCode() & 0xFF));
             } else {
                 log.error("与天宇服务器链接断开,无法发送数据!");
             }
@@ -154,7 +154,13 @@
         switch (cmdCode) {
             case 0x01:
                 // 处理心跳消息
-                log.info("收到心跳消息-->处理心跳消息");
+                RegisterReplyCommand registerReplyCommand = (RegisterReplyCommand) tyCommand;
+                log.info("收到注册消息-->处理注册消息{}", registerReplyCommand.getSuccess());
+                if (registerReplyCommand.getSuccess() != 1) {
+                    // 注册失败,重新注册
+                    log.info("注册失败,重新注册");
+                    registerMessage();
+                }
                 break;
             case 0x02:
                 // 处理注册消息

--
Gitblit v1.9.3