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/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs | 219 +++++++++++++++++++++++++++++------------------------- 1 files changed, 118 insertions(+), 101 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs index 7d156a6..a24c285 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs @@ -30,9 +30,9 @@ /// </summary> private bool newGatewayGetting = false; /// <summary> - /// 缃戝叧妫�娴嬩腑 + /// 缃戝叧鎼滅储涓� /// </summary> - private string isGatewayChecking = "0"; + private bool isGatewaySearching = true; #endregion @@ -60,9 +60,9 @@ //鍥炬爣 var picGwImage = new FrameLayout(); - picGwImage.Width = Application.GetMinRealAverage(861); - picGwImage.Height = Application.GetMinRealAverage(478); - picGwImage.Y = Application.GetRealWidth(251); + picGwImage.Width = this.GetPictrueRealSize(861); + picGwImage.Height = this.GetPictrueRealSize(478); + picGwImage.Y = Application.GetRealHeight(251); picGwImage.Gravity = Gravity.CenterHorizontal; picGwImage.BackgroundImagePath = "Gateway/WiredGatewaySearching.png"; bodyFrameLayout.AddChidren(picGwImage); @@ -77,6 +77,8 @@ //鍒濆鍖栬繛鎺ョ殑鍋囨兂鍔ㄧ敾鏁堟灉 this.InitConcetionAnimete(picGwImage, btnMsg); + //寮�鍚綉鍏虫娴嬬殑绾跨▼ + this.StartCheckGatewayThread(); } /// <summary> @@ -89,8 +91,8 @@ //鍥炬爣 var picGwImage = new FrameLayout(); - picGwImage.Width = Application.GetMinRealAverage(861); - picGwImage.Height = Application.GetMinRealAverage(478); + picGwImage.Width = this.GetPictrueRealSize(861); + picGwImage.Height = this.GetPictrueRealSize(478); picGwImage.Y = Application.GetRealWidth(158); picGwImage.Gravity = Gravity.CenterHorizontal; picGwImage.BackgroundImagePath = "Gateway/WiredGatewaySearching.png"; @@ -98,12 +100,12 @@ var btnFailIcon = new PicViewControl(66, 66); btnFailIcon.UnSelectedImagePath = "Item/FailIcon.png"; btnFailIcon.Gravity = Gravity.CenterHorizontal; - btnFailIcon.Y = Application.GetMinRealAverage(181); + btnFailIcon.Y = this.GetPictrueRealSize(181); 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; @@ -115,7 +117,7 @@ btnMsg1.Y = picGwImage.Bottom + Application.GetRealHeight(112); btnMsg1.TextID = R.MyInternationalizationString.uSearchGatewayFailMsg1; bodyFrameLayout.AddChidren(btnMsg1); - //1.闀挎寜ZB/RST閿�20绉掞紝缃戝叧鎭㈠鍑哄巶璁剧疆锛屾寚绀虹伅鍏ㄩ儴鐔勭伃鍚庯紝閲嶆柊鍏ョ綉銆� + //1.鐭寜HID/WCFG鎸夐敭锛岀郴缁熸寚绀虹伅蹇棯3绉掞紝缃戝叧杩涘叆鎹㈢粦妯″紡锛屽己鍒剁綉鍏崇粦瀹氬埌褰撳墠APP var btnMsg2 = new NormalViewControl(930, 100, true); btnMsg2.X = Application.GetRealWidth(75); btnMsg2.Y = btnMsg1.Bottom + Application.GetRealHeight(35); @@ -124,7 +126,7 @@ btnMsg2.TextColor = UserCenterColor.Current.TextGrayColor1; btnMsg2.IsMoreLines = true; bodyFrameLayout.AddChidren(btnMsg2); - //2.鐐规寜HID/WCFG閿紝杩涘叆缃戝叧鎹㈢粦妯″紡锛岀郴缁熸寚绀虹伅蹇棯5绉掋�� + //2.闀挎寜缃戝叧ZB/RST鎸夐敭20绉掍互涓婏紝鐩村埌鎵�鏈夋寚绀虹伅鍚屾椂鐏紝鍗虫仮澶嶅嚭鍘傝缃苟閲嶅惎 var btnMsg3 = new NormalViewControl(930, 100, true); btnMsg3.X = Application.GetRealWidth(75); btnMsg3.Y = btnMsg2.Bottom + Application.GetRealHeight(12); @@ -151,7 +153,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,13 +162,14 @@ frameback.BackgroundImagePath = "Item/BottomButtonGround.png"; bodyFrameLayout.AddChidren(frameback); var btnReDo = new NormalViewControl(300, 65, true); + btnReDo.IsBold = true; btnReDo.TextColor = UserCenterColor.Current.White; btnReDo.TextSize = 16; btnReDo.Y = Application.GetRealHeight(49); 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) => { //鍒濆鍖栧垵濮嬩腑閮ㄦ帶浠� @@ -177,7 +180,7 @@ var btnGoBack = new BottomClickButton(688); btnGoBack.Y = Application.GetRealHeight(1495); btnGoBack.TextID = R.MyInternationalizationString.uGobackGatewayManage; - if (UserCenterResourse.DicActionForm.ContainsKey("GatewayListForm") == false) + if (HdlFormLogic.Current.IsFormOpen("GatewayListForm") == false) { //杩斿洖涓婚〉 btnGoBack.TextID = R.MyInternationalizationString.uGobackToHomePage; @@ -187,7 +190,7 @@ { this.CloseForm(); //鍏抽棴鎸囧畾鐣岄潰 - this.CloseFormByFormName("NewGateWayMenuSelectForm"); + HdlFormLogic.Current.CloseFormByFormName("NewGateWayMenuSelectForm"); }; } @@ -201,11 +204,11 @@ private void InitConcetionAnimete(FrameLayout picGwImage, NormalViewControl btnMsg) { //棣栨牸鐨刋杞� - int firstPoint = Application.GetMinRealAverage(288); + int firstPoint = this.GetPictrueRealSize(288); //涓�鏍肩殑瀹藉害 - 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>(); @@ -218,17 +221,13 @@ var btnRound = new PicViewControl(width, width, false); btnRound.Radius = (uint)width / 2; btnRound.BackgroundColor = UserCenterColor.Current.ConcetionRoundColor; - btnRound.Y = Application.GetMinRealAverage(202); + btnRound.Y = this.GetPictrueRealSize(202); btnRound.X = listPoint[0]; picGwImage.AddChidren(btnRound); string strMsg = btnMsg.Text; HdlThreadLogic.Current.RunThread(() => { - //娓呯┖鍏ㄩ儴鍒楄〃 - HdlGatewayLogic.Current.ClearAllRealGateway(); - ZigBee.Common.Application.IsSearchingGateway = true; - int index = 1; int maxCount = 120 * 2; int timeCount = 120; @@ -236,39 +235,16 @@ { System.Threading.Thread.Sleep(500); maxCount--; - if (maxCount % 4 == 0) - { - lock(isGatewayChecking) - { - if (isGatewayChecking != "1") - { - isGatewayChecking = "1"; - HdlThreadLogic.Current.RunThread(async () => - { - //姣�2绉掓娴嬫悳绱㈠埌鐨勭綉鍏� - await this.CheckZbGatewayAndSetRow(); - lock (isGatewayChecking) - { - isGatewayChecking = "0"; - } - }); - } - } - } - if (this.newGatewayGetting == true) - { - //鑾峰彇寰楀埌鏂扮綉鍏�,鍒欎腑鏂嚎绋� - break; - } if (maxCount % 2 == 0) { timeCount--; } - if (maxCount <= 0) + if (maxCount <= 0 || this.newGatewayGetting == true) { + //鑾峰彇寰楀埌鏂扮綉鍏�,鍒欎腑鏂嚎绋� break; } - Application.RunOnMainThread(() => + HdlThreadLogic.Current.RunMain(() => { btnRound.X = listPoint[index]; index++; @@ -278,9 +254,13 @@ } //姝e湪鎼滅储缃戝叧鈥Xs btnMsg.Text = strMsg + timeCount + "s"; - }); + }, ShowErrorMode.NO); } - if (maxCount <= 0) + //鎼滅储缁撴潫 + this.isGatewaySearching = false; + + //2020.07.14杩藉姞:鍊掕鏃剁粨鏉熸椂,鍝�曟槸宸茬粡缁戝畾浜嗙殑缃戝叧,涔熸樉绀哄嚭鏉� + if (maxCount <= 0 && listZbGateway.Count == 0) { HdlThreadLogic.Current.RunMain(() => { @@ -288,14 +268,14 @@ this.InitFailMiddleFrame(); }); } - else if (newGatewayGetting == true) + else if (newGatewayGetting == true || listZbGateway.Count > 0) { HdlThreadLogic.Current.RunMain(() => { if (this.Parent != null) { var form = new GatewayManage.GatewaySearchListForm(); - this.AddFromAndRemoveNowForm(form, listZbGateway, dicZbGatewayDiv); + this.AddFormAndCloseNowForm(form, listZbGateway, dicZbGatewayDiv); } }); } @@ -307,19 +287,57 @@ #region 鈻� 缃戝叧妫�娴媉__________________________ /// <summary> + /// 寮�鍚綉鍏虫娴嬬殑绾跨▼ + /// </summary> + private void StartCheckGatewayThread() + { + this.isGatewaySearching = true; + this.dicZbGatewayDiv = new Dictionary<string, int>(); + + HdlThreadLogic.Current.RunThread(() => + { + //娓呯┖鍏ㄩ儴鍒楄〃 + HdlGatewayLogic.Current.ClearAllRealGatewayConection(true); + ZigBee.Common.Application.IsSearchingGateway = true; + + 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() { List<string> listId = new List<string>(); for (int i = 0; i < ZbGateway.GateWayList.Count; i++) { - if (ZbGateway.GateWayList[i].getGatewayBaseInfo.IpAddress == string.Empty) + if (ZbGateway.GateWayList[i].GwIP == string.Empty) { //IP娌℃湁鐨勭綉鍏筹紝鎴戜篃涓嶇煡閬撳畠鏄共鍢涚殑 continue; } - string gwId = HdlGatewayLogic.Current.GetGatewayId(ZbGateway.GateWayList[i]); + string gwId = ZbGateway.GateWayList[i].GwId; //閲嶅娣诲姞妫�娴� if (this.dicIdCheckCount.ContainsKey(gwId) == false) { @@ -341,32 +359,46 @@ } for (int i = 0; i < listId.Count; i++) { - ZbGateway way = ZbGateway.GateWayList.Find((obj) => HdlGatewayLogic.Current.GetGatewayId(obj) == listId[i]); + ZbGateway way = ZbGateway.GateWayList.Find((obj) => obj.GwId == listId[i]); if (way == null) { 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) + { //娣诲姞鎼滅储鍒扮殑缃戝叧鍒扮紦瀛�(鎵ц缃戝叧淇濆瓨鎿嶄綔) - ShowErrorMode showMode = this.dicIdCheckCount[listId[i]] == 0 ? ShowErrorMode.YES : ShowErrorMode.NO; - var result = await HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO); + var result = HdlGatewayLogic.Current.AddNewGateway(way, ShowErrorMode.NO, WriteLogMode.YES); if (result == false) { continue; @@ -394,12 +426,19 @@ { //闇�瑕侀噸鏂扮粦瀹� this.dicZbGatewayDiv[listId[i]] = 2; + //鑾峰彇鍒颁簡鏂扮綉鍏� + this.newGatewayGetting = true; } - if (mode == GatewayBindMode.First) + if (mode == GatewayBindMode.First || mode == GatewayBindMode.Binded) { //鎴戣寰楄繖閲岄渶瑕佽幏鍙栦竴涓嬫柊缃戝叧鐨勮澶囧垪琛� - Common.LocalDevice.Current.SetDeviceToMemmoryByGateway(way); + HdlDeviceCommonLogic.Current.SetDeviceToMemmoryByGateway(way.GwId, true); + if (way.IsMainGateWay == true) + { + //濡傛灉瀹冩槸涓荤綉鍏�,鍒欏埛鏂板満鏅垪琛� + HdlSceneLogic.Current.RefreshSceneUIList(true); + } } } return true; @@ -412,33 +451,11 @@ /// <summary> /// 鐢婚潰鍏抽棴 /// </summary> - public override void CloseForm() + public override void CloseFormBefore() { ZigBee.Common.Application.IsSearchingGateway = false; - //鏂紑娌℃湁鎵ц缁戝畾鐨勭綉鍏崇殑mqtt - var list = new List<ZbGateway>(); - for (int i = 0; i < ZbGateway.GateWayList.Count; i++) - { - if (HdlGatewayLogic.Current.IsGatewayExist(ZbGateway.GateWayList[i]) == false) - { - list.Add(ZbGateway.GateWayList[i]); - } - } - if (list.Count > 0) - { - foreach (var way in list) - { - ZbGateway.GateWayList.RemoveAll((obj) => HdlGatewayLogic.Current.GetGatewayId(obj) == HdlGatewayLogic.Current.GetGatewayId(way)); - way.DisConnect("Search"); - } - } - if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false) - { - //鍒锋柊涓婚〉 - UserView.UserPage.Instance.Fresh(); - } - - base.CloseForm(); + + base.CloseFormBefore(); } #endregion -- Gitblit v1.8.0