From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 18 九月 2020 13:58:19 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 108 insertions(+), 11 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
index 7bf85cc..c7bc442 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -151,8 +151,8 @@
             }
             get
             {
-                //10绉掑悗鍏佽鍐嶆璁块棶
-                if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 10 * 1000)
+                //8绉掑悗鍏佽鍐嶆璁块棶
+                if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 8 * 1000)
                 {
                     oldAccessHttpTime = DateTime.Now;
                     return true;
@@ -160,6 +160,14 @@
                 return false;
             }
         }
+        /// <summary>
+        /// 鍙樻洿缃戠粶鏃剁殑浜嬩欢
+        /// </summary>
+        private string changedNetworkTime = string.Empty;
+        /// <summary>
+        /// 褰撳墠 wifi 鐨�
+        /// </summary>
+        private string oldSsid = string.Empty;
 
         #endregion
 
@@ -177,6 +185,7 @@
                 tcpClient = new System.Net.Sockets.TcpClient();
                 tcpClient.Connect("192.168.8.1", 5000);
                 networkStream = tcpClient.GetStream();
+                networkStream.ReadTimeout = 1000;
                 //鍔犲瘑鏁版嵁
                 string sendDataMsg = "hdl1985.";
                 string DefaultdesKey = "hdl1985.";
@@ -368,23 +377,111 @@
         /// <summary>
         /// 鐩戝惉瀹夊崜缃戠粶鍙樺寲
         /// </summary>
-        /// <param name="value"></param>
-        private void NetworkStateChanged(int value)
+        /// <param name="value">0:娌℃湁缃戠粶 1:4G  2:wifi</param>
+        public void NetworkStateChanged(int value)
         {
+            if (Common.Config.Instance.HomeId == string.Empty)
+            {
+                //鍦ㄧ櫥褰曠晫闈笉澶勭悊
+                return;
+            }
+#if iOS
+            var nowSsid = this.SSID;
+            if (this.oldSsid == nowSsid)
+            {
+                //濡傛灉褰撳墠 wifi 鐨勫悕瀛椾竴鏍凤紝鍒欎笉澶勭悊
+                ZigBee.Common.Application.FindGateWaySocket.Start();
+                return;
+            }
+            this.oldSsid = nowSsid;
+#endif
             //娌℃湁缃戠粶
             if (value == 0)
             {
                 this.CanAccessHttp = false;
+                //鍏抽棴Socket
+                ZigBee.Common.Application.FindGateWaySocket.Stop();
             }
-            //鍙互鍙�4G
-            else if (value == 1)
+            //WIFI鎴栬��4G鏃�
+            if (value == 1 || value == 2)
             {
+                //鍏佽鑱旂綉
                 this.CanAccessHttp = true;
-            }
-            //WIFI
-            else if (value == 2)
-            {
-                this.CanAccessHttp = true;
+                this.changedNetworkTime = DateTime.Now.ToString("yyyyMMdd HH.mm.ss");
+                //褰撳墠鎵ц姝ょ嚎绋嬬殑鏃堕棿
+                string thisThreadTime = this.changedNetworkTime;
+
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //涓嶇濡備綍,閮借鏄剧ず杞湀
+                    ProgressBar.Show();
+
+                    //妫�娴嬫槸鍚﹀凡缁忓畬鎴愯处鍙蜂俊鎭垵濮嬪寲
+                    if (UserCenterResourse.UserInfo.InitUserInfoSuccess == false
+                       && Common.Config.Instance.HomeId != string.Empty)
+                    {
+                        //閲嶆柊鍒濆鍖栬处鍙蜂俊鎭�
+                        UserCenterLogic.ReInitUserAccoutInfo();
+                        //鍥犱负涓婇潰杩欎釜涓滆タ鑰楁椂铔箙鐨�,鎵�浠ュ鐞嗗畬涔嬪悗杩涜鍒ゆ柇
+                        if (thisThreadTime != this.changedNetworkTime)
+                        {
+                            //鍦ㄥ鐞嗙殑杩囩▼涓�,鍒囨崲浜嗙綉缁�,鎶婁笅闈㈢殑澶勭悊浜ょ粰鍙﹀鐨勭嚎绋�
+                            return;
+                        }
+                    }
+                    //閲嶆柊鍒濆鍖朣ocket
+                    ZigBee.Common.Application.FindGateWaySocket.Stop();
+                    System.Threading.Thread.Sleep(100);
+
+                    //鏂帀鏈湴杩炴帴
+                    HdlGatewayLogic.Current.ClearAllRealGatewayConection(true);
+                    //鏂帀杩滅▼
+                    ZigBee.Device.ZbGateway.DisConnectRemoteMqttClient();
+
+                    //濡傛灉鏄痺ifi
+                    if (value == 2)
+                    {
+                        ZigBee.Common.Application.FindGateWaySocket.Start();
+                        //鍊熺敤涓�涓嬭繖涓彉閲�(妫�娴嬭兘鍚﹀箍鎾埌缃戝叧)
+                        UserCenterResourse.DicReceiveGatewayTest = new Dictionary<string, ZigBee.Device.ZbGateway>();
+                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 1;
+                        //鍥哄畾绛変釜3绉掑惂
+                        System.Threading.Thread.Sleep(2500);
+                        if (thisThreadTime != this.changedNetworkTime)
+                        {
+                            //鍙樻洿浜嗙綉缁�,浜ょ敱鍏朵粬绾跨▼澶勭悊
+                            return;
+                        }
+                        UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
+                        System.Threading.Thread.Sleep(500);
+
+                        bool canReceiveGw = false;
+                        foreach (var gateway in UserCenterResourse.DicReceiveGatewayTest.Values)
+                        {
+                            if (gateway.HomeId == Common.Config.Instance.Home.Id)
+                            {
+                                //鑳藉鎼滅储寰楀埌缃戝叧
+                                canReceiveGw = true;
+                                break;
+                            }
+                        }
+                        UserCenterResourse.DicReceiveGatewayTest = null;
+                        //璁剧疆杩滅▼杩炴帴鐨勫垵濮嬪��
+                        ZigBee.Device.ZbGateway.IsRemote = canReceiveGw == false;
+                        if (canReceiveGw == false)
+                        {
+                            //濡傛灉鏄繙绋嬬殑璇�,杩藉姞绛夊緟鏃堕棿(鎬诲叡5绉�)
+                            System.Threading.Thread.Sleep(2000);
+                        }
+                    }
+                    else if (value == 1)
+                    {
+                        //濡傛灉鏄�4G鐨勮瘽,鐩存帴绛夊緟
+                        System.Threading.Thread.Sleep(4500);
+                    }
+                    ProgressBar.Close();
+
+                }, ShowErrorMode.NO);
             }
         }
 

--
Gitblit v1.8.0