Quellcode durchsuchen

增加伺服电机

crazycat vor 10 Monaten
Ursprung
Commit
d142514c90
1 geänderte Dateien mit 61 neuen und 0 gelöschten Zeilen
  1. 61 0
      src/main/java/com/welampiot/utils/ToolUtils.java

+ 61 - 0
src/main/java/com/welampiot/utils/ToolUtils.java

@@ -2608,6 +2608,67 @@ System.out.println(res);
         }
     }
 
+    /**
+     * 发送mqtt指令
+     * @param sendTopic  发送的topic
+     * @param cmdInfo   发送的指令内容
+     * @param resTopic  接收指令返回的topic
+     * @return
+     */
+    public static String sendMqttCmdInfo(String sendTopic,Object cmdInfo,String resTopic){
+        MqttClient client;
+        String res = "";
+
+        try {
+            try {
+                client=new MqttClient(mqttConfig.getUrl(),mqttConfig.getClientId()+"_"+(new Date()).getTime(),new MemoryPersistence());
+                MqttConnectOptions options=new MqttConnectOptions();
+                options.setCleanSession(true);
+                options.setUserName(mqttConfig.getUsername());
+                options.setPassword(mqttConfig.getPassword().toCharArray());
+                options.setConnectionTimeout(mqttConfig.getTimeout());
+                options.setKeepAliveInterval(mqttConfig.getKeepalive());
+                MqttHandler mqttHandler = new MqttHandler();
+                mqttHandler.setTopic(resTopic);
+
+                // 设置回调
+                client.setCallback(mqttHandler);
+
+                // 建立连接
+                client.connect(options);
+                //            MqttCustomerClient.setClient(client);
+                client.subscribe(resTopic);
+
+                // 消息发布所需参数
+                MqttMessage message;
+                if (cmdInfo instanceof String){
+                    message = new MqttMessage(((String) cmdInfo).getBytes());
+                }else {
+                    message = new MqttMessage((byte[]) cmdInfo);
+                }
+                message.setQos(0);
+                client.publish(sendTopic, message);
+                int in = 0;
+
+                while (true){
+                    Thread.sleep(1000);
+                    if (mqttHandler.getRes() != null && mqttHandler.getRes().length() != 0){
+                        res = mqttHandler.getRes();
+                        break;
+                    }
+                    in ++;
+                    if (in > 10) break;
+                }
+                client.disconnect();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return res;
+    }
+
     public static void main(String[] args) {
         System.out.println(getPublicIp());
         System.out.println(formatNumber(0.0));