//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
// {
// ///
// /// MqttClient
// ///
// public static IMqttClient mqttClient_A;
// public static string mqttClientIP;
// public static string mqttGatewayMAC;
// static bool remoteIsConnected;
// static bool onConnection = false;
// static Mqtt_A_Protocol()
// {
// InitMqtt();
// }
// ///
// /// 断开远程Mqtt的链接
// ///
// 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();
// }
// ///
// /// 启动A协议Mqtt
// ///
// public static async Task StartMqtt()
// {
// try
// {
// if (remoteIsConnected)
// return;
// if (onConnection)
// return;
// onConnection = true;
// new System.Threading.Thread(async () =>
// {
// 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(6688);
// 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))//客户端ID
// .WithTcpServer(mqttClientIP, 1883)//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);
// }
// }
// ///
// ///
// ///
// /// 附加数据包
// /// 操作类型:0=网关控制;1=订阅网关数据;2=订阅网关上线数据
// ///
// 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)
// {
// }
// }
// }
//}