From 44b8d8b3407cacce19e3702c2167ecdf3db5d24c Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 23 Oct 2024 16:10:05 +0800
Subject: [PATCH] 优化

---
 ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java |   35 +++++++++++++++++++++++++++++++----
 1 files changed, 31 insertions(+), 4 deletions(-)

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..56ffa99 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
@@ -119,11 +119,19 @@
     }
 
     /**
+     * 无人机控制订阅
+     */
+    public void uavControlSubscribe(String boxSn) {
+        SubscribeCommand subscribeCommand = new SubscribeCommand(boxSn);
+        this.sendMessage(tyConfiguration.getIpPort(), subscribeCommand);
+    }
+
+    /**
      * 发送消息
      */
     public void sendMessage(String key, BaseCommand msg) {
         try {
-            ChannelFuture future = TyNettyTcpClient.channels.get(key).getFuture();
+            ChannelFuture future = TyNettyTcpClient.channels.get(key).getChannelFuture();
             Channel channel = future.channel();
             if (channel.isActive()) {
                 InetSocketAddress ipSocket = (InetSocketAddress) channel.remoteAddress();
@@ -133,7 +141,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("与天宇服务器链接断开,无法发送数据!");
             }
@@ -142,6 +150,9 @@
         }
     }
 
+    /**
+     * 云台控制基于角度
+     */
     @Override
     public void controlAngle(String boxSn) {
         ControlAngleCommand controlAngleCommand = new ControlAngleCommand(boxSn.getBytes(), (byte) 0x00, (byte) 0x00, (byte) 0x05);
@@ -154,12 +165,28 @@
         switch (cmdCode) {
             case 0x01:
                 // 处理心跳消息
-                log.info("收到心跳消息-->处理心跳消息");
+                RegisterReplyCommand registerReplyCommand = (RegisterReplyCommand) tyCommand;
+                log.info("收到注册消息-->处理注册消息{}", registerReplyCommand.getSuccess());
+                if (registerReplyCommand.getSuccess() != 1) {
+                    // 注册失败,重新注册
+                    log.info("注册失败,重新注册");
+                    registerMessage();
+                }
                 break;
             case 0x02:
                 // 处理注册消息
                 HeartbeatReplyCommand heartbeatReplyCommand = (HeartbeatReplyCommand) tyCommand;
                 log.info("收到心跳消息-->处理心跳消息{}", heartbeatReplyCommand.getTimestamp());
+                break;
+            case 0x03:
+                // 处理订阅消息
+                SubscribeCommand subscribeCommand = (SubscribeCommand) tyCommand;
+                log.info("收到订阅消息-->处理订阅消息{}", subscribeCommand.getBoxSn());
+                break;
+            case 0x04:
+                // 处理取消订阅消息
+                subscribeCommand = (SubscribeCommand) tyCommand;
+                log.info("收到取消订阅消息-->处理取消订阅消息{}", subscribeCommand.getBoxSn());
                 break;
             case (byte) 0xA8:
                 // 处理无人机状态消息
@@ -174,7 +201,7 @@
         }
     }
 
-    @Scheduled(fixedRate = 5000)
+    @Scheduled(fixedRate = 3000)
     public void sendHeartBeat() {
         long timestamp = System.currentTimeMillis();
         log.debug("定时向天宇发送⼼跳,时间戳{}", timestamp);

--
Gitblit v1.9.3