From 2d414e3b007f750cdad4f9e4a7c04db696bca5e4 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期四, 23 四月 2020 16:13:59 +0800 Subject: [PATCH] 2020-04-23 1.优化远程连接提示,改为Loading方案,防止连接过程用户点击重连图标。 2.点击网络检测图标会判断,是否正在远程连接,如果是,会弹窗提示用户”正在远程连接,是否仍要重新检测“。 3.Help 增加隐藏长按功能,长按后,可以开启远程过程异常弹窗提示。长按后关闭。 --- Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs | 87 +++++++++++++++++++++++++++++++++---------- 1 files changed, 67 insertions(+), 20 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs index 0774a26..a2f8a98 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs @@ -17,6 +17,11 @@ { public static class MqttCommon { + /// <summary> + /// 鏄惁鎻愮ず 杩滅▼杩炴帴鐨勯敊璇俊鎭� + /// </summary> + public static bool IfDEBUG = false; + static string mqttEncryptKey = ""; static string checkGatewayTopicBase64 = ""; static RemoteMACInfo CurRemoteMACInfo = null; @@ -57,7 +62,7 @@ new System.Threading.Thread (async () => { while (true) { try { - System.Threading.Thread.Sleep (100); + System.Threading.Thread.Sleep (200); if (!CommonPage.IsRemote) continue; await StartCloudMqtt (); @@ -67,6 +72,15 @@ } }) { IsBackground = true }.Start (); } + + public static void InitState () + { + IfNeedReadAllDeviceStatus = true; + bNeedStartTip = true; + IsGatewayOnline = false; + + } + /// <summary> /// 鏄惁璁㈤槄鎴愬姛 @@ -135,7 +149,7 @@ if (CommonPage.IsRemote) { Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink); } - Utlis.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient"); + //Utlis.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient"); } } catch (Exception e) { @@ -153,7 +167,7 @@ /// <summary> /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴 /// </summary> - static bool remoteMqttIsConnecting; + public static bool remoteMqttIsConnecting; static bool remoteIsConnected; /// <summary> /// 鍚姩杩滅▼Mqtt @@ -224,7 +238,7 @@ } if (RemoteMqttClient.ConnectedHandler == null) { RemoteMqttClient.UseConnectedHandler (async (e) => { - IfNeedReadAllDeviceStatus = true; + //IfNeedReadAllDeviceStatus = true; mCheckGatewayTime = DateTime.Now; CheckGatewayCount = 0; bNeedStartTip = true; @@ -273,10 +287,19 @@ } } catch (Exception ex) { - Utlis.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}"); + //Utlis.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}"); + + MainPage.LoadingSetText ("Connect error, trying to reconnect."); + + if (IfDEBUG) { + MainPage.ShowAlertOnMainThread ("error: " + ex.Message); + } + } finally { //鏈�缁堣閲婃斁杩炴帴鐘舵�� remoteMqttIsConnecting = false; + + MainPage.LoadingHide (); } }); } @@ -315,16 +338,25 @@ //----绗笁姝� 寮�濮嬭繛鎺� await MQTTConnectAsync (); } else { - Utlis.WriteLine ("============>Mqtt CurRemoteMACInfo null"); + //Utlis.WriteLine ("============>Mqtt CurRemoteMACInfo null"); + + MainPage.LoadingSetText ("Please wait, failed to get gateway parameters."); } } } else { - Utlis.WriteLine ("============>Mqtt mqttInfoRequestResult_Obj null"); + //Utlis.WriteLine ("============>Mqtt mqttInfoRequestResult_Obj null"); + + MainPage.LoadingSetText ("Please wait, failed to get user parameters."); + //MainPage.LoadingSetText ("Please wait, failed to get parameters."); } - } catch { } + } catch { + + } } else { - Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触"); + //Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触"); + MainPage.AddTip ("Please wait, failed to get parameters."); + //MainPage.LoadingSetText ("Please wait, failed to get parameters."); } } @@ -350,6 +382,8 @@ mMqttInfo = mqttInfoRequestResult_info; //--绗簩姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT await GetSingleHomeGatewayPaggerAndMQTTConnectAsync (); + } else { + MainPage.LoadingSetText ("Please wait, failed to get user parameters."); } } } @@ -363,7 +397,10 @@ //鑾峰彇鍙傛暟鎴愬姛锛屽紑濮嬭繛鎺�... - MainPage.AddTip ("Successfully obtained parameters, starting to connect..."); + //MainPage.AddTip ("Successfully obtained parameters, starting to connect..."); + + MainPage.LoadingStart ("Please wait, connecting remotely..."); + //try { // var url = mMqttInfo.connEmqDomainPort; // var clientId = mMqttInfo.connEmqClientId; @@ -389,7 +426,7 @@ // Console.WriteLine ("Connect error: " + ex.Message); //} - string mes = ""; + //string mes = ""; try { var url = mMqttInfo.connEmqDomainPort; @@ -397,7 +434,7 @@ var username = mMqttInfo.connEmqUserName; var passwordRemote = mMqttInfo.connEmqPwd; - mes = "step1.Set Data"; + //mes = "step1.Set Data"; CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString; mqttEncryptKey = CurRemoteMACInfo.aesKey; var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder () @@ -408,14 +445,16 @@ // .WithCommunicationTimeout (new TimeSpan (0, 0, 20)) .Build (); - mes = "step2.DisConnect"; + //mes = "step2.DisConnect"; await DisConnectRemoteMqttClient ("StartRemoteMqtt"); //MainPage.AddTip ("Start to connect..."); - mes = "step3.Start to connect"; + //mes = "step3.Start to connect"; await RemoteMqttClient.ConnectAsync (options1); - mes = "step4.Connected Success"; + //mes = "step4.Connected Success"; remoteIsConnected = true; IsDisConnectingWithSendCatch = false; + + MainPage.LoadingSetText ("Remote connection succeeded."); //MainPage.AddTip ("Connection succeeded!"); //await MqttRemoteSend (new byte [] { 0 }, 1); @@ -423,12 +462,17 @@ //await MqttRemoteSend (new byte [] { 0 }, 4); } catch (Exception ex) { - mes = ex.Message; + //mes = ex.Message; //options1 寮傚父鎻愮ず - //Console.WriteLine("Connect error: " + ex.Message); - //MainPage.ShowAlertOnMainThread ("Connect error: " + ex.Message); + //Console.WriteLine ("Connect error: " + ex.Message); + + MainPage.LoadingSetText ("Connect error."); + + if (IfDEBUG) { + MainPage.ShowAlertOnMainThread ("Connect error: " + ex.Message); + } } finally { - MainPage.ShowAlertOnMainThread ("finally: " + mes); + //MainPage.ShowAlertOnMainThread ("finally: " + mes); //MainPage.AddTip ("finally: " + mes); } @@ -447,7 +491,8 @@ if (bNeedStartTip) { bNeedStartTip = false; if (CommonPage.IsRemote) { - MainPage.AddTip ("Getting remote connection parameters..."); + //MainPage.AddTip ("Getting remote connection parameters..."); + MainPage.LoadingStart ("Please wait, getting connection parameters..."); } } } @@ -545,6 +590,8 @@ if (mGatewayRes != null) { CurRemoteMACInfo.aesKey = mGatewayRes.AesKey; mqttEncryptKey = CurRemoteMACInfo.aesKey; + } else { + MainPage.LoadingSetText ("Please wait, failed to get gateway parameters."); } } -- Gitblit v1.8.0