From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3
---
ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs | 87 ++++++++++++++++++++++++++++---------------
1 files changed, 56 insertions(+), 31 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
index b9fc01d..e549d19 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.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
+ Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.WIFI);
}
else
{
+ waitCount++;
+ if (waitCount >= 2)
+ {
+ //涓ゆ閮芥悳涓嶅埌,鎵嶆爣璁颁负杩滅▼
+ continue;
+ }
+ waitCount = 0;
//灞�鍩熺綉骞挎挱涓嶅埌缃戝叧
ZbGateway.IsRemote = true;
//褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮�
- Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
+ Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.Remote);
}
}
catch { }
@@ -150,9 +159,9 @@
System.Threading.Thread.Sleep(500);
continue;
}
- var ipEndPoint = new System.Net.IPEndPoint(IPAddress.Any, 0);
+ var ipEndPoint = new System.Net.IPEndPoint(0, 0);
var bytes = FindGateWaySocket.udpClient.Receive(ref ipEndPoint);
- if (bytes[43] == 0xA2)
+ if (bytes.Length > 43 && bytes[43] == 0xA2)
{
//骞挎挱鍥炲缃戝叧鐨勫熀鏈俊鎭鐞�
var ipAddress = $"{bytes[3]}.{bytes[4]}.{bytes[5]}.{bytes[6]}";
@@ -191,7 +200,7 @@
listReceiveIP.Add(ipAddress);
}
//2020.08.07杩藉姞:鍗充娇绌虹殑浣忓畢id涔熷缓绔嬮摼鎺�,瀵瑰簲鎵嬪姩鎭㈠缃戝叧鍑哄巶璁剧疆鏃�,鍥犱负娌℃湁瑙g粦,浣嗘槸浣忓畢id涓虹┖鐨勯棶棰�
- else if (Shared.Phone.UserCenter.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
+ else if (Shared.Phone.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
{
listReceiveIP.Add(ipAddress);
}
@@ -201,17 +210,17 @@
if (gateWay == null)
{
//鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣
- Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
+ Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
ZbGateway.GateWayList.Add(zbGateWay);
await zbGateWay.StartLocalMqtt(ipAddress);
}
else
- {
+ {
+ gateWay.IsVirtual = false;
//鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣
- Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
+ Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
- gateWay.IsVirtual = false;
if (gateWay.GwIP != ipAddress)
{
await gateWay.DisConnectLocalMqttClient("2");
@@ -246,23 +255,23 @@
}
//娴嬭瘯鑳藉惁骞挎挱寰楀埌缃戝叧,閫氬父鎯呭喌涓嬩笉妫�娴�
- if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
{
- if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest == null)
+ if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest == null)
{
//闃叉寮傚父,铏界劧鍑犵巼寰堜綆
- Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
+ Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
continue;
}
- if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
+ if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
{
if (gateWay == null)
{
- Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = zbGateWay;
+ Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = zbGateWay;
}
else
{
- Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = gateWay;
+ Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = gateWay;
}
}
}
@@ -270,20 +279,20 @@
else
{
//璋冭瘯鐢�
- if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
{
var data33 = Encoding.UTF8.GetString(bytes).Replace("锟�)", string.Empty).TrimStart('\0').TrimEnd('\0');
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, data33);
+ Shared.Phone.HdlLogLogic.Current.WriteLog(3, data33);
}
- }
+ }
await System.Threading.Tasks.Task.Delay(20);
}
catch (Exception ex)
{
//璋冭瘯鐢�
- if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
{
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message);
+ Shared.Phone.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message);
}
}
}
@@ -400,13 +409,24 @@
/// 鍚姩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鍦板潃
+ var netwifi = new Shared.Net.NetWiFi();
+ string phoneIp = netwifi.GetIPAddress();
+ //"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>
@@ -428,27 +448,32 @@
/// 寮傛鍙戦�佹暟鎹�
/// </summary>
/// <param name="tempPacket"></param>
- public static void BeginSend(System.Net.IPEndPoint iPEndPoint, byte[] bytes)
+ public static void BeginSend(IPEndPoint iPEndPoint, byte[] bytes)
{
try
{
- if (udpClient == null)
+ if (Start() == false)
{
+ //璋冭瘯鐢�
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+ {
+ Shared.Phone.HdlLogLogic.Current.WriteLog(3, "udp New涓嶈捣鏉�");
+ }
return;
}
int value = udpClient.Send(bytes, bytes.Length, iPEndPoint);
//璋冭瘯鐢�
- if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
{
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + " 鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes));
+ Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + " 鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes));
}
}
catch (Exception ex)
{
//璋冭瘯鐢�
- if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+ if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
{
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message);
+ Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message);
}
}
}
--
Gitblit v1.8.0