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 | 205 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 203 insertions(+), 2 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs index 8c68ded..c7bc442 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs @@ -57,7 +57,7 @@ { string myId = this.SSID; - if (myId != null && myId.StartsWith("Widora-") == true) + if (myId != null && myId.StartsWith("hdlZigbeeGW-") == true) { return true; } @@ -114,7 +114,6 @@ /// </summary> private Com.Mediatek.Elian.ElianNative hdlWiFi = null; #endif - /// <summary> /// TCP鍗忚 /// </summary> @@ -127,6 +126,48 @@ /// Ap妯″紡缃戝叧杩斿洖鐨勭閽� /// </summary> private string randDesKey = null; + /// <summary> + /// 鏄惁宸茬粡娣诲姞缃戠粶鍙樺寲鐩戝惉 + /// </summary> + private bool hadAddListenNetWork = false; + + /// <summary> + /// 鑳藉惁璁块棶http + /// </summary> + private bool m_CanAccessHttp = true; + /// <summary> + /// 涓婁竴娆¤闂甴ttp鐨勬椂闂� + /// </summary> + private DateTime oldAccessHttpTime = DateTime.Now; + /// <summary> + /// 鑳藉惁璁块棶http + /// </summary> + public bool CanAccessHttp + { + set + { + m_CanAccessHttp = value; + oldAccessHttpTime = DateTime.Now; + } + get + { + //8绉掑悗鍏佽鍐嶆璁块棶 + if (m_CanAccessHttp == true || (DateTime.Now - oldAccessHttpTime).TotalMilliseconds > 8 * 1000) + { + oldAccessHttpTime = DateTime.Now; + return true; + } + return false; + } + } + /// <summary> + /// 鍙樻洿缃戠粶鏃剁殑浜嬩欢 + /// </summary> + private string changedNetworkTime = string.Empty; + /// <summary> + /// 褰撳墠 wifi 鐨� + /// </summary> + private string oldSsid = string.Empty; #endregion @@ -144,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."; @@ -286,6 +328,165 @@ #endregion + #region 鈻� 鐩戝惉缃戠粶鍙樺寲_______________________ + + /// <summary> + /// 寮�鍚洃鍚綉缁� + /// </summary> + public void StartListenNetWork() + { + if (hadAddListenNetWork == true) + { + return; + } + hadAddListenNetWork = true; + +#if Android + //寮�鍚洃鍚畨鍗撶綉缁滃彉鍖� + BaseActivity.NetworkStateChanged += (value) => + { + //缃戠粶鍙樺寲 + this.NetworkStateChanged(value); + }; +#endif + +#if iOS + //寮�鍚洃鍚琁OS缃戠粶鍙樺寲 + GateWay.Ios.Reachability.ReachabilityChanged += (sender, e) => + { + var internetStatus = GateWay.Ios.Reachability.InternetConnectionStatus(); + if (internetStatus == GateWay.Ios.NetworkStatus.NotReachable)//娌℃湁缃戠粶杩炴帴 0 + { + //缃戠粶鍙樺寲 + this.NetworkStateChanged(0); + } + else if (internetStatus == GateWay.Ios.NetworkStatus.ReachableViaCarrierDataNetwork)//3,4G鐨勭綉缁滆繛鎺� 1 + { + //缃戠粶鍙樺寲 + this.NetworkStateChanged(1); + } + else if (internetStatus == GateWay.Ios.NetworkStatus.ReachableViaWiFiNetwork) //wifi鐨勭綉缁滆繛鎺� 2 + { + //缃戠粶鍙樺寲 + this.NetworkStateChanged(2); + } + }; +#endif + } + + /// <summary> + /// 鐩戝惉瀹夊崜缃戠粶鍙樺寲 + /// </summary> + /// <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(); + } + //WIFI鎴栬��4G鏃� + if (value == 1 || 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); + } + } + + #endregion + #region 鈻� 涓�鑸柟娉昣__________________________ #if Android -- Gitblit v1.8.0