From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs | 88 +++++++++++++++++++++++++++++-------------- 1 files changed, 59 insertions(+), 29 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs index 1e13399..d5f60c1 100755 --- a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs @@ -18,7 +18,7 @@ /// <summary> /// 鏄惁姝e湪鎼滅储缃戝叧 /// </summary> - public static bool IsSearchingGateway = false; + public static bool IsSearchingGateway = false; /// <summary> /// 鍙戦�佺殑鏃堕棿闂撮殧(鍗曚綅:绉�) /// </summary> @@ -69,6 +69,7 @@ new System.Threading.Thread(() => { var broadBytes = new byte[44]; + var waitCount = 0; while (true) { @@ -110,17 +111,25 @@ if (listReceiveIP.Count > 0) { + waitCount = 0; //灞�鍩熺綉鑳藉骞挎挱寰楀埌缃戝叧 ZbGateway.IsRemote = false; //褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮� - Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.WIFI); + Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI); } else { + waitCount++; + if (waitCount >= 2) + { + //涓ゆ閮芥悳涓嶅埌,鎵嶆爣璁颁负杩滅▼ + continue; + } + waitCount = 0; //灞�鍩熺綉骞挎挱涓嶅埌缃戝叧 ZbGateway.IsRemote = true; //褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮� - Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.Remote); + Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote); } } catch { } @@ -150,7 +159,7 @@ System.Threading.Thread.Sleep(500); continue; } - var ipEndPoint = new System.Net.IPEndPoint(0, 0); + var ipEndPoint = new System.Net.IPEndPoint(IPAddress.Any, 0); var bytes = FindGateWaySocket.udpClient.Receive(ref ipEndPoint); if (bytes.Length > 43 && bytes[43] == 0xA2) { @@ -191,7 +200,7 @@ listReceiveIP.Add(ipAddress); } //2020.08.07杩藉姞:鍗充娇绌虹殑浣忓畢id涔熷缓绔嬮摼鎺�,瀵瑰簲鎵嬪姩鎭㈠缃戝叧鍑哄巶璁剧疆鏃�,鍥犱负娌℃湁瑙g粦,浣嗘槸浣忓畢id涓虹┖鐨勯棶棰� - else if (Shared.Phone.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true) + else if (Shared.Phone.UserCenter.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true) { listReceiveIP.Add(ipAddress); } @@ -201,17 +210,17 @@ if (gateWay == null) { //鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣 - Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId); + Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId); ZbGateway.GateWayList.Add(zbGateWay); await zbGateWay.StartLocalMqtt(ipAddress); } else - { - gateWay.IsVirtual = false; + { //鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣 - Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId); + Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId); + gateWay.IsVirtual = false; if (gateWay.GwIP != ipAddress) { await gateWay.DisConnectLocalMqttClient("2"); @@ -246,23 +255,23 @@ } //娴嬭瘯鑳藉惁骞挎挱寰楀埌缃戝叧,閫氬父鎯呭喌涓嬩笉妫�娴� - if (Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway == 1) + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway == 1) { - if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest == null) + if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest == null) { //闃叉寮傚父,铏界劧鍑犵巼寰堜綆 - Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway = 0; + Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway = 0; continue; } - if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest.ContainsKey(id) == false) + if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest.ContainsKey(id) == false) { if (gateWay == null) { - Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = zbGateWay; + Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = zbGateWay; } else { - Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = gateWay; + Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = gateWay; } } } @@ -270,20 +279,20 @@ else { //璋冭瘯鐢� - if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) { var data33 = Encoding.UTF8.GetString(bytes).Replace("锟�)", string.Empty).TrimStart('\0').TrimEnd('\0'); - Shared.Phone.HdlLogLogic.Current.WriteLog(3, data33); + Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, data33); } - } + } await System.Threading.Tasks.Task.Delay(20); } catch (Exception ex) { //璋冭瘯鐢� - if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) { - Shared.Phone.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message); + Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message); } } } @@ -400,13 +409,29 @@ /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳� /// </summary> /// <param name="port"></param> - public static void Start() + public static bool Start() { - if (udpClient!=null) + if (udpClient != null) { - return; + return true; } - udpClient = new UdpClient { EnableBroadcast = true }; + + //鑾峰彇鎵嬫満鐨剋ifi鍦板潃 +#if Android + var netwifi = new Shared.Net.NetWiFi(); + string phoneIp = netwifi.GetIPAddress(); +#endif +#if iOS + string phoneIp = Shared.Net.NetWiFi.GetIPAddress(); +#endif + //"127.0.0.1"鏄簳灞傚簱閲岄潰璁剧疆鐨勫垵濮嬮粯璁ゅ�� + if (phoneIp != "127.0.0.1") + { + udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse(phoneIp), 7624)); + udpClient.EnableBroadcast = true; + return true; + } + return false; } /// <summary> @@ -432,23 +457,28 @@ { try { - if (udpClient == null) + if (Start() == false) { + //璋冭瘯鐢� + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) + { + Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "udp New涓嶈捣鏉�"); + } return; } int value = udpClient.Send(bytes, bytes.Length, iPEndPoint); //璋冭瘯鐢� - if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) { - Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + " 鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes)); + Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + " 鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes)); } } catch (Exception ex) { //璋冭瘯鐢� - if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) + if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) { - Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message); + Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message); } } } -- Gitblit v1.8.0