From 81307af66465a6b5ba189b0fb9b347787f004a4e Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期三, 30 十二月 2020 16:14:15 +0800
Subject: [PATCH] 2020-12-30-1
---
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs | 161 +++++++++++++++++++++++++++++++++--------------------
1 files changed, 99 insertions(+), 62 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs
index 5a3c676..8584b30 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpSearchForm.cs
@@ -26,9 +26,9 @@
/// </summary>
private bool newGatewayGetting = false;
/// <summary>
- /// 缃戝叧妫�娴嬩腑
+ /// 缃戝叧鎼滅储涓�
/// </summary>
- private string isGatewayChecking = "0";
+ private bool isGatewaySearching = true;
#endregion
@@ -70,6 +70,8 @@
//鍒濆鍖栬繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉
this.InitConcetionAnimete();
+ //寮�鍚綉鍏虫娴嬬殑绾跨▼
+ this.StartCheckGatewayThread();
}
/// <summary>
@@ -82,8 +84,8 @@
//鍥炬爣
var picGwImage = new FrameLayout();
- picGwImage.Width = Application.GetMinRealAverage(852);
- picGwImage.Height = Application.GetMinRealAverage(478);
+ picGwImage.Width = this.GetPictrueRealSize(852);
+ picGwImage.Height = this.GetPictrueRealSize(478);
picGwImage.Y = Application.GetRealWidth(158);
picGwImage.Gravity = Gravity.CenterHorizontal;
picGwImage.BackgroundImagePath = "Gateway/WirelessGatewaySearching.png";
@@ -91,12 +93,12 @@
var btnFailIcon = new PicViewControl(66, 66);
btnFailIcon.UnSelectedImagePath = "Item/FailIcon.png";
btnFailIcon.Gravity = Gravity.CenterHorizontal;
- btnFailIcon.Y = Application.GetMinRealAverage(200);
+ btnFailIcon.Y = this.GetPictrueRealSize(200);
picGwImage.AddChidren(btnFailIcon);
//鎼滅储澶辫触
var btnFailView = new NormalViewControl(300, 60, true);
btnFailView.TextAlignment = TextAlignment.Center;
- btnFailView.Y = Application.GetMinRealAverage(305);
+ btnFailView.Y = this.GetPictrueRealSize(305);
btnFailView.Gravity = Gravity.CenterHorizontal;
btnFailView.TextColor = UserCenterColor.Current.TextGrayColor3;
btnFailView.TextID = R.MyInternationalizationString.uSearchFail;
@@ -144,7 +146,7 @@
bodyFrameLayout.AddChidren(btnMsg5);
//閲嶈瘯
- var frameback = new FrameLayoutControl();
+ var frameback = new FrameLayoutStatuControl();
frameback.UseClickStatu = false;
frameback.Y = Application.GetRealHeight(1259);
frameback.Gravity = Gravity.CenterHorizontal;
@@ -160,7 +162,7 @@
btnReDo.Gravity = Gravity.CenterHorizontal;
btnReDo.TextAlignment = TextAlignment.Center;
btnReDo.TextID = R.MyInternationalizationString.uReDoAgain;
- frameback.AddChidren(btnReDo, ChidrenBindMode.BindEventOnly);
+ frameback.AddChidren(btnReDo, ChidrenBindMode.BindEvent);
frameback.ButtonClickEvent += (sender, e) =>
{
//鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠�
@@ -196,8 +198,8 @@
{
//鍥炬爣
var btnGwImage = new FrameLayout();
- btnGwImage.Width = Application.GetMinRealAverage(852);
- btnGwImage.Height = Application.GetMinRealAverage(478);
+ btnGwImage.Width = this.GetPictrueRealSize(852);
+ btnGwImage.Height = this.GetPictrueRealSize(478);
btnGwImage.Y = Application.GetRealHeight(193);
btnGwImage.Gravity = Gravity.CenterHorizontal;
btnGwImage.BackgroundImagePath = "Gateway/WirelessGatewaySearching.png";
@@ -212,11 +214,11 @@
bodyFrameLayout.AddChidren(btnMsg);
//棣栨牸鐨刋杞�
- int firstPoint = Application.GetMinRealAverage(280);
+ int firstPoint = this.GetPictrueRealSize(280);
//涓�鏍肩殑瀹藉害
- int width = Application.GetMinRealAverage(22);
+ int width = this.GetPictrueRealSize(22);
//闂磋窛澶у皬
- int space = Application.GetMinRealAverage(12);
+ int space = this.GetPictrueRealSize(12);
//鐢熸垚鏍煎瓙鍧愭爣
var listPoint = new List<int>();
@@ -229,17 +231,13 @@
var btnRound = new PicViewControl(width, width, false);
btnRound.Radius = (uint)width / 2;
btnRound.BackgroundColor = UserCenterColor.Current.ConcetionRoundColor;
- btnRound.Y = Application.GetMinRealAverage(225);
+ btnRound.Y = this.GetPictrueRealSize(225);
btnRound.X = listPoint[0];
btnGwImage.AddChidren(btnRound);
string strMsg = btnMsg.Text;
HdlThreadLogic.Current.RunThread(() =>
{
- //娓呯┖鍏ㄩ儴鍒楄〃
- HdlGatewayLogic.Current.ClearAllRealGateway();
- ZigBee.Common.Application.IsSearchingGateway = true;
-
int index = 1;
//璁℃椂鏃堕棿
int timeCount = 0;
@@ -251,27 +249,8 @@
if (timeCount == 10)
{
//5绉掑悗娓呯┖缃戝叧鍒楄〃
- HdlGatewayLogic.Current.ClearAllRealGateway();
+ HdlGatewayLogic.Current.ClearAllRealGatewayConection(true);
ZigBee.Common.Application.IsSearchingGateway = true;
- }
- if (timeCount % 4 == 0 && timeCount >= 10)
- {
- lock (isGatewayChecking)
- {
- if (isGatewayChecking != "1")
- {
- isGatewayChecking = "1";
- HdlThreadLogic.Current.RunThread(async () =>
- {
- //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏�
- await this.CheckZbGatewayAndSetRow();
- lock (isGatewayChecking)
- {
- isGatewayChecking = "0";
- }
- });
- }
- }
}
if (timeCount % 2 == 0)
{
@@ -283,7 +262,7 @@
break;
}
- Application.RunOnMainThread(() =>
+ HdlThreadLogic.Current.RunMain(() =>
{
btnRound.X = listPoint[index];
index++;
@@ -293,11 +272,15 @@
}
//姝e湪鎼滅储缃戝叧鈥Xs
btnMsg.Text = strMsg + timeOut + "s";
- });
+ }, ShowErrorMode.NO);
System.Threading.Thread.Sleep(500);
}
- if (timeOut <= 0)
+ //鎼滅储缁撴潫
+ this.isGatewaySearching = false;
+
+ //2020.07.14杩藉姞:鍊掕鏃剁粨鏉熸椂,鍝�曟槸宸茬粡缁戝畾浜嗙殑缃戝叧,涔熸樉绀哄嚭鏉�
+ if (timeOut <= 0 && listZbGateway.Count == 0)
{
HdlThreadLogic.Current.RunMain(() =>
{
@@ -305,7 +288,7 @@
this.InitFailMiddleFrame();
});
}
- else if (newGatewayGetting == true)
+ else if (newGatewayGetting == true || listZbGateway.Count > 0)
{
HdlThreadLogic.Current.RunMain(() =>
{
@@ -324,39 +307,88 @@
#region 鈻� 缃戝叧妫�娴媉__________________________
/// <summary>
+ /// 寮�鍚綉鍏虫娴嬬殑绾跨▼
+ /// </summary>
+ private void StartCheckGatewayThread()
+ {
+ this.isGatewaySearching = true;
+ this.dicZbGatewayDiv = new Dictionary<string, int>();
+
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ int count = 0;
+ while (this.Parent != null && this.isGatewaySearching == true)
+ {
+ //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏�
+ System.Threading.Thread.Sleep(500);
+ count++;
+ if (count < 4)
+ {
+ //涓昏涓轰簡蹇竴鐐硅兘澶熶腑鏂繖涓嚎绋�
+ continue;
+ }
+ count = 0;
+
+ this.CheckZbGatewayAndSetRow();
+
+ if (this.newGatewayGetting == true)
+ {
+ //鑾峰彇寰楀埌鏂扮綉鍏�,鍒欎腑鏂嚎绋�
+ break;
+ }
+ }
+ });
+ }
+
+ /// <summary>
/// 妫�娴嬫悳绱㈠埌鐨勭綉鍏�
/// </summary>
- private async Task<bool> CheckZbGatewayAndSetRow()
+ private bool CheckZbGatewayAndSetRow()
{
- var listCheck = new HashSet<string>();
for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
{
var way = ZbGateway.GateWayList[i];
- var wayId = HdlGatewayLogic.Current.GetGatewayId(way);
+ var wayId = way.GwId;
if (dicZbGatewayDiv.ContainsKey(wayId) == true)
{
//宸茬粡澶勭悊浜�
continue;
}
+ //2020.09.18 鏈湴杩炴帴娌℃湁杩炴帴涓�,鍒欎笉澶勭悊
+ if (way.localIsConnected == false)
+ {
+ string strMsg = "鎼滅储鍒颁簡缃戝叧,浣嗘槸鏈湴閾炬帴涓嶄笂 ID:" + way.GwId + " IP:" + way.GwIP + " 鍚嶇О:" + way.GwName;
+ HdlLogLogic.Current.WriteLog(-1, strMsg);
+ continue;
+ }
//缃戝叧缁戝畾妯″紡
- GatewayBindMode mode = GatewayBindMode.BindAgain;
- //濡傛灉鏄涓�娆$粦瀹�,鎴栬�呮槸浠ュ墠宸茬粡缁戝畾杩囦簡鐨�
- if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true
- || way.getGatewayBaseInfo.HomeId == Common.Config.Instance.HomeId)
+ var mode = GatewayBindMode.BindAgain;
+ //浣忓畢ID涓虹┖ 绗竴娆$粦瀹�
+ if (HdlGatewayLogic.Current.HomeIdIsEmpty(way) == true)
{
- if (way.getGatewayBaseInfo.HomeId != Common.Config.Instance.HomeId)
- {
- //绗竴娆$粦瀹�,涔熷氨鏄綉鍏充綇瀹匢D涓虹┖
- mode = GatewayBindMode.First;
- }
- else
- {
- //宸茬粡缁戝畾杩囦簡
- mode = GatewayBindMode.Binded;
- }
+ mode = GatewayBindMode.First;
+ }
+ //浣忓畢ID涓嶇浉绛� 闇�瑕侀噸鏂扮粦瀹�
+ else if (way.HomeId != Common.Config.Instance.HomeId)
+ {
+ mode = GatewayBindMode.BindAgain;
+ }
+ //濡傛灉鏈湴涓嶅瓨鍦ㄧ殑璇�,褰撳仛绗竴娆$粦瀹氬鐞�
+ else if (HdlGatewayLogic.Current.IsGatewayExist(way) == false)
+ {
+ mode = GatewayBindMode.First;
+ }
+ //浣忓畢ID涓�鏍�,鍒欐槸宸茬粡缁戝畾杩囦簡
+ else
+ {
+ mode = GatewayBindMode.Binded;
+ }
+ //杩欎袱绉嶆儏鍐甸兘鏄渶瑕侀噸鏂版坊鍔�(宸茬粡缁戝畾杩囦簡鐨�,鏈夊彲鑳戒綇瀹匢D娌″啓杩涘幓,瀹冩湁鍙兘鏄汉涓虹殑娓呯┖浣忓畢ID)
+ if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded)
+ {
//娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮紦瀛�(鎵ц缃戝叧淇濆瓨鎿嶄綔)
- var result = await HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO);
+ var result = HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO, WriteLogMode.YES);
if (result == false)
{
continue;
@@ -386,10 +418,15 @@
this.newGatewayGetting = true;
}
- if (mode == GatewayBindMode.First)
+ if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded)
{
//鎴戣寰楄繖閲岄渶瑕佽幏鍙栦竴涓嬫柊缃戝叧鐨勮澶囧垪琛�
- Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way);
+ Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way.GwId, true);
+ if (way.IsMainGateWay == true)
+ {
+ //濡傛灉瀹冩槸涓荤綉鍏�,鍒欏埛鏂板満鏅垪琛�
+ HdlSceneLogic.Current.RefreshSceneUIList(true);
+ }
}
}
return true;
--
Gitblit v1.8.0