From 9137222ece9b978eb97b5598f2eee6e070bcf9d6 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期五, 28 二月 2020 15:22:16 +0800
Subject: [PATCH] 2020-02-28 更新

---
 Crabtree/SmartHome/HDL/Operation/Control.cs |   93 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 76 insertions(+), 17 deletions(-)

diff --git a/Crabtree/SmartHome/HDL/Operation/Control.cs b/Crabtree/SmartHome/HDL/Operation/Control.cs
index c30e693..d1cd999 100644
--- a/Crabtree/SmartHome/HDL/Operation/Control.cs
+++ b/Crabtree/SmartHome/HDL/Operation/Control.cs
@@ -8,6 +8,7 @@
 {
     public class Control
     {
+        public static bool IsEnterBackground = false;
         public bool IsCanShowTip;
         public System.DateTime LatestDateTime = System.DateTime.Now;
 
@@ -153,6 +154,20 @@
                 case Command.UpdataLightDimmingTheLargestLevelACK:
                 case Command.UpdataLightDimmingMaximumOrMinimumACK:
                 case Command.WriteManageWirelessNetACK:
+                //**********鏂板mqtt涓婁綅鏈哄崗璁�**********
+                case Command.ReadGateWayURLACK:
+                case Command.SetGateWayURLACK:
+                case Command.ReadGateWayClientIDUsernamePasswordACK:
+                case Command.SetGateWayClientIDUsernamePasswordACK:
+                case Command.ReadGateWayAESEncryptionACK:
+                case Command.SetGateWayAESEncryptionACK:
+                case Command.ReadGateWayTopicACK:
+                case Command.SetGateWayTopicACK:
+                case Command.ReadGateWayAdminInfoACK:
+                case Command.SetGateWayAdminInfoACK:
+                case Command.ReadGateWayLocalEncryptionACK:
+                case Command.SetReadGateWayLocalEncryptionACK:
+                //************************************
                 case Command.ReadGateWayModelInfoACK:
                 case Command.ReadGatewayServerIPACK:
                 case Command.SetGateWayModelInfoACK:
@@ -204,6 +219,7 @@
                 case Command.READ_JOG_OPEN_TIME_ACK:
                 case Command.SET_JOG_CLOSE_TIME_ACK:
                 case Command.READ_JOG_CLOSE_TIME_ACK:
+                case Command.ReadRemarkACK:
                     receiveFlag += "";
                     break;
                 case Command.ControlMusicModel1ACK:
@@ -371,30 +387,56 @@
         void managerSendCount (object o)
         {
             add ();
-            try {
-                System.Console.WriteLine ("鍙戦�佹暟鎹�:" + SendFlag);
-                BusSocket.AsyncBeginSend (Packet);
-                Packet.HaveSendCount--;
-
+            if (CommonPage.IsRemote && !isLocal) {
+                if (!SmartHome.MqttCommon.IsGatewayOnline) {
+                    System.Threading.Thread.Sleep (500);
+                    System.Console.WriteLine ($"缃戝叧涓嶅湪绾� 鍙栨秷鍙戦��:"+ SendFlag);
+                    Packet.HaveSendCount = 3;
+                    allDone.Set ();
+                    return;
+                }
+                if (IsEnterBackground) {
+                    System.Threading.Thread.Sleep (500);
+                    System.Console.WriteLine ("宸茶繘鍏ュ悗鍙� 鍙栨秷鍙戦��");
+                    Packet.HaveSendCount = 3;
+                    allDone.Set ();
+                    return;
+                }
+                System.Console.WriteLine ("杩滅▼鍙戦�佹暟鎹�:" + SendFlag);
+                SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
+                Packet.FlagDateTime = DateTime.Now;
+                Packet.HaveSendCount++;
                 //杩欓噷鏄噸鍙戜袱娆�
                 while (Packet.HaveSendCount < 3) {
-                    if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
-                        //System.Console.WriteLine ("閲嶅彂鏁版嵁:" + SendFlag);
-                        BusSocket.AsyncBeginSend (Packet);
+                    if (Packet.FlagDateTime.AddMilliseconds (2000).Ticks <= System.DateTime.Now.Ticks) {
+                        SmartHome.MqttCommon.MqttRemoteSend (Packet.Bytes);
+                        System.Console.WriteLine ("閲嶅彂杩滅▼鍙戦�佹暟鎹�:" + SendFlag);
+                        Packet.FlagDateTime = DateTime.Now;
+                        Packet.HaveSendCount++;
                     }
                     System.Threading.Thread.Sleep (100);
-                }
+                }鈥�                allDone.Set ();鈥�            } else {
+                try {
+                    System.Console.WriteLine ("鍙戦�佹暟鎹�:" + SendFlag);
+                    BusSocket.AsyncBeginSend (Packet);
+                    Packet.HaveSendCount--;
 
-            } catch (Exception ex) {
-                Console.WriteLine ("managerSendCount:" + ex.ToString ());
-            } finally {
-                allDone.Set ();
-                if (Packet.HaveSendCount == 3 && IsCanShowTip) {
-                    //MainPage.AddTip (Language.StringByID (SimpleControl.R.MyInternationalizationString.OperationFailed));
+                    //杩欓噷鏄噸鍙戜袱娆�
+                    while (Packet.HaveSendCount < 3 && BusSocket.IsRunning) {
+                        if (Packet.FlagDateTime.AddMilliseconds (1000).Ticks <= System.DateTime.Now.Ticks) {
+                            System.Console.WriteLine ("閲嶅彂鏁版嵁:" + SendFlag);
+                            BusSocket.AsyncBeginSend (Packet);
+                        }
+                        System.Threading.Thread.Sleep (100);
+                    }
+
+                } catch (Exception ex) {
+                    Console.WriteLine ("managerSendCount:" + ex.ToString ());
+                } finally {
+                    allDone.Set ();
                 }
             }
         }
-
         /// <summary>
         /// 褰撳墠鏁版嵁鍖�
         /// </summary>
@@ -458,6 +500,20 @@
             case Command.WriteManageWirelessNet:
             case Command.UpdataLightDimmingTheLargestLevel:
             case Command.UpdataLightDimmingMaximumOrMinimum:
+            //**********鏂板mqtt涓婁綅鏈哄崗璁�**********
+            case Command.ReadGateWayURL:
+            case Command.SetGateWayURL:
+            case Command.ReadGateWayClientIDUsernamePassword:
+            case Command.SetGateWayClientIDUsernamePassword:
+            case Command.ReadGateWayAESEncryption:
+            case Command.SetGateWayAESEncryption:
+            case Command.ReadGateWayTopic:
+            case Command.SetGateWayTopic:
+            case Command.ReadGateWayAdminInfo:
+            case Command.SetGateWayAdminInfo:
+            case Command.SetGateWayLocalEncryption:
+            case Command.ReadGateWayLocalEncryption:
+            //************************************
             case Command.ReadGateWayModelInfo:
             case Command.ReadGatewayServerIP:
             case Command.SetGateWayModelInfo:
@@ -510,6 +566,7 @@
             case Command.READ_JOG_OPEN_TIME_CMD:
             case Command.SET_JOG_CLOSE_TIME_CMD:
             case Command.READ_JOG_CLOSE_TIME_CMD:
+            case Command.ReadRemark:
                 this.SendFlag += "";
                 break;
             case Command.ControlMusicModel2:
@@ -586,8 +643,9 @@
         /// </summary>
         /// <param name="target">鍙戦�佸璞�</param>
         /// <param name="sendCount">閲嶅彂娆℃暟</param>
-        public void Send (Target target, SendCount sendCount, bool isWait)
+        public void Send (Target target, SendCount sendCount, bool isWait, bool needLocal = false)
         {
+            isLocal = needLocal;
             Packet = new Packet (target.SendBytes, target.IPEndPoint);
             Packet.HaveSendCount = 3 - (int)sendCount;
 
@@ -597,5 +655,6 @@
                 this.wait ();
             }
         }
+        bool isLocal = false;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0