From ed3bfb7462d44747230437717e8673a5192f833f Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期一, 30 十一月 2020 20:34:51 +0800
Subject: [PATCH] 2020-11-30-2

---
 HDL_ON/DAL/Net/Mqtt_A_Protocol.cs |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 221 insertions(+), 0 deletions(-)

diff --git a/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs b/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs
new file mode 100644
index 0000000..d7dd0dd
--- /dev/null
+++ b/HDL_ON/DAL/Net/Mqtt_A_Protocol.cs
@@ -0,0 +1,221 @@
+锘�//using System;
+//using MQTTnet.Client;
+//using MQTTnet;
+//using MQTTnet.Client.Options;
+//using System.Net.Sockets;
+//using System.Threading.Tasks;
+
+//namespace HDL_ON.DAL.Net
+//{
+//    public static class Mqtt_A_Protocol
+//    {
+//        /// <summary>
+//        /// MqttClient
+//        /// </summary>
+//        public static IMqttClient mqttClient_A;
+//        public static string mqttClientIP;
+//        public static string mqttGatewayMAC;
+//        public static string mqttGatewayName;
+//        static bool remoteIsConnected;
+
+//        static bool onConnection = false;
+
+//        static Mqtt_A_Protocol()
+//        {
+//            InitMqtt();
+//        }
+
+//        /// <summary>
+//        /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
+//        /// </summary>
+//        public static async Task DisConnectRemoteMqttClient(string s = "")
+//        {
+//            try
+//            {
+//                if (remoteIsConnected)
+//                {
+//                    remoteIsConnected = false;
+//                    System.Console.WriteLine($"Remote涓诲姩鏂紑_{s}");
+//                    //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+//                    await mqttClient_A.DisconnectAsync();
+//                }
+//            }
+//            catch (Exception e)
+//            {
+//                Console.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+//            }
+//        }
+
+//        static bool isSubscribeSuccess;
+//        static async Task SubscribeTopics()
+//        {
+//            if (remoteIsConnected && !isSubscribeSuccess)
+//            {
+//                try
+//                {
+//                    var Topic1 = $"/BusGateWayToApp/{mqttGatewayMAC}/Common/Json";
+//                    try
+//                    {
+//                        await mqttClient_A.SubscribeAsync(Topic1);
+//                    }
+//                    catch (Exception ex)
+//                    {
+//                        await DisConnectRemoteMqttClient(ex.Message);
+//                        await StartMqtt();
+//                        if (remoteIsConnected)
+//                        {
+//                            await mqttClient_A.SubscribeAsync(Topic1);
+//                        }
+//                    }
+//                }
+//                catch { }
+//            }
+//        }
+
+//        static void InitMqtt()
+//        {
+//            new System.Threading.Thread(async () =>
+//            {
+//                while (true)
+//                {
+//                    try
+//                    {
+//                        System.Threading.Thread.Sleep(1000);
+//                        //if (!CommonPage.IsRemote)
+//                        //    continue;
+//                        if (remoteIsConnected)
+//                            continue;
+//                        await StartMqtt();
+//                        await SubscribeTopics();
+//                    }
+//                    catch { }
+//                }
+//            })
+//            { IsBackground = true }.Start();
+//        }
+
+//        /// <summary>
+//        /// 鍚姩A鍗忚Mqtt
+//        /// </summary>
+//        public static async Task StartMqtt()
+//        {
+//            try
+//            {
+//                if (remoteIsConnected)
+//                    return;
+//                if (onConnection)
+//                    return;
+//                onConnection = true;
+//                new System.Threading.Thread(async () =>
+//                {
+//                    MainPage.Log($"mqtt 绾跨▼鍚姩 : {DateTime.Now}");
+//                    if (remoteIsConnected)
+//                        return;
+//                    try
+//                    {
+//                        if (mqttClient_A == null)
+//                        {
+//                            mqttClient_A = new MqttFactory().CreateMqttClient();
+//                            mqttClient_A.UseApplicationMessageReceivedHandler(async e =>
+//                            {
+//                                var aesDecryptTopic = e.ApplicationMessage.Topic;
+//                                var aesDecryptPayload = e.ApplicationMessage.Payload;
+//                                MainPage.Log(aesDecryptTopic);
+//                                MainPage.Log($"Des Topic={aesDecryptTopic}");
+//                            });
+
+//                            mqttClient_A.UseConnectedHandler(async (e) =>
+//                            {
+//                                MainPage.Log("mqtt connected !!");
+//                                onConnection = false;
+//                            });
+//                        }
+//                        try
+//                        {
+//                            int readCount = 0;
+//                            BusSocket.Stop();
+//                            System.Threading.Thread.Sleep(1000);
+//                            BusSocket.Start();
+//                            System.Threading.Thread.Sleep(1000);
+//                            Control.ReadGatewayIPAddress();
+//                            while (true)
+//                            {
+//                                if (!string.IsNullOrEmpty(mqttClientIP))
+//                                {
+//                                    break;
+//                                }
+//                                else if (readCount > 10)
+//                                {
+//                                    onConnection = false;
+//                                    return;
+//                                }
+//                                else
+//                                {
+//                                    Control.ReadGatewayIPAddress();
+//                                    System.Threading.Thread.Sleep(200);
+//                                }
+//                            }
+//                            BusSocket.Stop();
+//                            //System.Threading.Thread.Sleep(1000);
+//                            //BusSocket.Start(6000);
+//                            //System.Threading.Thread.Sleep(1000);
+
+//                            var options = new MqttClientOptionsBuilder()//MQTT杩炴帴鍙傛暟濉厖
+//                                .WithClientId(Guid.NewGuid().ToString().Substring(0, 5))//瀹㈡埛绔疘D
+//                                .WithTcpServer(mqttClientIP, 8586)//MQTTServerIP.Text, Int32.Parse(MQTTServerPort.Text.ToString()))//TCP鏈嶅姟绔�  1883  锛屽嵆MQTT鏈嶅姟绔�
+//                                .WithCredentials("", "")//"", "")//鍑瘉  甯愬彿 瀵嗙爜
+//                                .WithCommunicationTimeout(new TimeSpan(0, 0, 60)) //閲嶈繛瓒呮椂鏃堕棿锛岄粯璁�5s
+//                                .WithKeepAlivePeriod(new TimeSpan(0, 0, 15)) //淇濇寔杩炴帴鏃堕棿锛岄粯璁�5s锛屽績璺冲寘
+//                                .Build();
+//                            await mqttClient_A.ConnectAsync(options);
+//                            remoteIsConnected = true;
+//                        }
+//                        catch { }
+//                    }
+//                    catch (Exception ex)
+//                    {
+//                    }
+//                    finally
+//                    {
+//                        onConnection = false;
+//                    }
+//                })
+//                { IsBackground = true }.Start();
+//            }
+//            catch (Exception ex)
+//            {
+//                MainPage.Log("============>" + ex.Message);
+//            }
+//        }
+
+
+
+
+//        /// <summary>
+//        /// 
+//        /// </summary>
+//        /// <param name="message">闄勫姞鏁版嵁鍖�</param>
+//        /// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁</param>
+//        /// <returns></returns>
+//        public static async Task MqttRemoteSend(byte[] message)
+//        {
+//            try
+//            {
+//                if (mqttClient_A == null || !mqttClient_A.IsConnected)
+//                {
+//                    await StartMqtt();
+//                }
+//                if (!mqttClient_A.IsConnected)
+//                {
+//                    return;
+//                }
+//                var topicName = $"/AppToBusGateWay/{mqttGatewayMAC}/Common/Json";
+//                var m = new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
+//                await mqttClient_A?.PublishAsync(m);
+//            }
+//            catch (Exception e)
+//            {
+//            }
+//        }
+//    }
+//}

--
Gitblit v1.8.0