From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs | 203 ++++++++++++++++++++++++++++---------------------- 1 files changed, 115 insertions(+), 88 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs index 725d5fa..2bc736f 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs @@ -61,7 +61,7 @@ /// <param name="i_listdevice">绐楀笜鐨勫洖璺�</param> public void ShowForm(Rollershade i_CurtainDevice) { - UserView.HomePage.Instance.ScrollEnabled = false; + this.ScrollEnabled = false; this.curtainDevice = i_CurtainDevice; @@ -99,15 +99,51 @@ listView.Height = bodyFrameLayout.Height; bodyFrameLayout.AddChidren(listView); - //娣诲姞鏂瑰悜琛� - this.AddDirectionRow(); - //娣诲姞闄愪綅琛� - this.AddLimitRow(); - //娣诲姞閲嶇疆鐢垫満琛� - this.AddElectricalMachineryRow(); + //瀵艰建闀垮害涓�0鏃� + if (curtainData.CurtainLength <= 0) + { + //鐢垫満鏁版嵁寮傚父,璇烽噸缃數鏈� + this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uCurtainDataIsErrorPleaseResetCurtain)); + try + { + //璁惧寮傚父琛ユ晳 -> 娣诲姞閲嶇疆鐢垫満琛� + this.AddElectricalMachineryRow(); + return; + } + catch (Exception ex2) + { + HdlLogLogic.Current.WriteLog(ex2, "寮�鍚堝笜琛ユ晳寮傚父1"); + return; + } + } - //闄愪綅鏁版嵁鎺ユ敹 - this.ReceiveLimitData(); + try + { + //娣诲姞鏂瑰悜琛� + this.AddDirectionRow(); + //娣诲姞闄愪綅琛� + this.AddLimitRow(); + //娣诲姞閲嶇疆鐢垫満琛� + this.AddElectricalMachineryRow(); + + //闄愪綅鏁版嵁鎺ユ敹 + this.ReceiveLimitData(); + } + catch (Exception ex) + { + //Log鍑哄姏 + string msg = "褰撳墠婵�娲荤殑鐣岄潰[" + UserCenterResourse.NowActionFormID + "]"; + HdlLogLogic.Current.WriteLog(ex, msg); + //鐢垫満鏁版嵁寮傚父,璇烽噸缃數鏈� + this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uCurtainDataIsErrorPleaseResetCurtain)); + try + { + this.listView.RemoveAll(); + //璁惧寮傚父琛ユ晳 -> 娣诲姞閲嶇疆鐢垫満琛� + this.AddElectricalMachineryRow(); + } + catch (Exception ex2) { HdlLogLogic.Current.WriteLog(ex2, "寮�鍚堝笜琛ユ晳寮傚父2"); } + } }); } @@ -141,10 +177,10 @@ var form = new BottomItemSelectForm(); form.AddForm(Language.StringByID(R.MyInternationalizationString.uDirectionSelect), listText, nowSelectNo); - form.FinishSelectEvent += async (index) => + form.FinishSelectEvent += (index) => { //鍙樻洿鏂瑰悜 - var result = await HdlDeviceCurtainLogic.Current.SetCurtainDirection(curtainDevice, index == 0 ? false : true); + var result = HdlDeviceCurtainLogic.Current.SetCurtainDirection(curtainDevice, index == 0 ? false : true); if (result == false) { return; @@ -216,6 +252,8 @@ frameBack.AddChidren(btnProgressView); int progressValue = (int)(curtainData.OpenLimitValue / (curtainData.CurtainLength * 1.0) * 100); + //璁剧疆鐧惧垎姣旂殑鍒濆鍊� + curtainData.OpenLimitPersent = progressValue; var btnProgress1 = new NormalViewControl(200, 50, true); btnProgress1.X = Application.GetRealWidth(200); btnProgress1.Y = btnProgressView.Y; @@ -224,7 +262,7 @@ btnProgress1.Text = progressValue + "%"; frameBack.AddChidren(btnProgress1); //杩涘害鏉� - this.openSeekBar = new SeekBarControl(965); + this.openSeekBar = new SeekBarControl(965); openSeekBar.Y = btnProgressView.Bottom + Application.GetRealHeight(46); openSeekBar.ProgressBarColor = 0xff288bfd; openSeekBar.Progress = progressValue; @@ -298,7 +336,8 @@ frameBack.AddChidren(btnSave); btnSave.ButtonClickEvent += (sender, e) => { - if (this.receiveOpenlimit == true) + //2020.05.17:杩藉姞铏氭嫙浣忓畢鍙互鐩存帴鐐瑰嚮 + if (this.receiveOpenlimit == true || Common.Config.Instance.Home.IsVirtually == true) { //纭寮�闄愪綅鐐� this.SaveOpenLimit(); @@ -318,37 +357,28 @@ //鏁版嵁鍙樻洿,鐧惧垎姣� curtainData.OpenLimitPersent = value; }; + //铏氭嫙浣忓畢涓嶉渶瑕佺洃鍚� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } HdlThreadLogic.Current.RunThread(async () => { - //澶勭悊涓� - bool checking = false; while (openSeekBar.Parent != null) { int nowValue = curtainData.OpenLimitPersent; - if (oldProValue == nowValue || checking == true) + if (oldProValue == nowValue) { //鍊间笉绛夋墠澶勭悊 await Task.Delay(500); continue; } oldProValue = nowValue; - checking = true; - if (curtainData.DeleteOpenLimit == true) - { - //閲嶇疆寮�闄愪綅鐐� - var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.UpLimit); - if (result == false) - { - checking = false; - continue; - } - curtainData.DeleteOpenLimit = false; - } + //灏嗙獥甯樿皟鏁村埌鎸囧畾鐧惧垎姣� this.sendDiv = 1; curtainDevice.WcdGoToTiltValue(nowValue); - checking = false; } }); } @@ -360,14 +390,16 @@ { //纭褰撳墠浣嶇疆涓哄紑闄愪綅? string msg = Language.StringByID(R.MyInternationalizationString.uCommitCurtainOpenLimitMsg); - this.ShowMassage(ShowMsgType.Confirm, msg, async () => + this.ShowMassage(ShowMsgType.Confirm, msg, () => { + decimal openValue = ((decimal)curtainData.OpenLimitPersent / 100) * curtainData.CurtainLength; + decimal closeValue = ((decimal)curtainData.CloseLimitPersent / 100) * curtainData.CurtainLength; + if (openValue < 0) { openValue = 0; } + if (closeValue < 0) { closeValue = curtainData.CurtainLength; } //鎵ц纭鍙婅鐩栦笂闄愪綅鐐� - var result = await HdlDeviceCurtainLogic.Current.CommitCurtainLimitPoint(curtainDevice, Rollershade.CurtainPrivateInstalledLimi.UpLimit, - curtainData.OpenLimitPersent, curtainData.CloseLimitPersent); + var result = HdlDeviceCurtainLogic.Current.SetAutoOpenCurtainLimitPoint(curtainDevice, (int)openValue, (int)closeValue, curtainData.CurtainLength); if (result == true) { - curtainData.DeleteOpenLimit = true; this.receiveOpenlimit = false; } }); @@ -393,6 +425,8 @@ frameBack.AddChidren(btnProgressView); int progressValue = (int)(curtainData.CloseLimitValue / (curtainData.CurtainLength * 1.0) * 100); + //璁剧疆鐧惧垎姣旂殑鍒濆鍊� + curtainData.CloseLimitPersent = progressValue; var btnProgress1 = new NormalViewControl(200, 50, true); btnProgress1.X = Application.GetRealWidth(200); btnProgress1.Y = btnProgressView.Y; @@ -401,7 +435,7 @@ btnProgress1.Text = progressValue + "%"; frameBack.AddChidren(btnProgress1); //杩涘害鏉� - this.closeSeekBar = new SeekBarControl(965); + this.closeSeekBar = new SeekBarControl(965); closeSeekBar.Y = btnProgressView.Bottom + Application.GetRealHeight(46); closeSeekBar.ProgressBarColor = 0xff288bfd; closeSeekBar.Progress = progressValue; @@ -457,7 +491,7 @@ frameBack.AddChidren(btnPlus); btnPlus.ButtonClickEvent += (sender, e) => { - if (closeSeekBar.Progress >=100) + if (closeSeekBar.Progress >= 100) { return; } @@ -475,7 +509,8 @@ frameBack.AddChidren(btnSave); btnSave.ButtonClickEvent += (sender, e) => { - if (this.receiveCloseLimit == true) + //2020.05.17:杩藉姞铏氭嫙浣忓畢鍙互鐩存帴鐐瑰嚮 + if (this.receiveCloseLimit == true || Common.Config.Instance.Home.IsVirtually == true) { //淇濆瓨鍚堥檺浣嶇偣 this.SaveCloseLimit(); @@ -495,36 +530,28 @@ //鏁版嵁鍙樻洿,鐧惧垎姣� curtainData.CloseLimitPersent = value; }; + //铏氭嫙浣忓畢涓嶉渶瑕佺洃鍚� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } HdlThreadLogic.Current.RunThread(async () => { - //澶勭悊涓� - bool checking = false; while (closeSeekBar.Parent != null) { int nowValue = curtainData.CloseLimitPersent; - if (oldProValue == nowValue || checking == true) + if (oldProValue == nowValue) { //鍊间笉绛夋墠澶勭悊 await Task.Delay(500); continue; } - checking = true; oldProValue = nowValue; - if (curtainData.DeleteCloseLimit == true) - { - //閲嶇疆鍚堥檺浣嶇偣 - var result = await HdlDeviceCurtainLogic.Current.DeleteCurtainLimitPoint(curtainDevice, Rollershade.LimiType.DownLimit); - if (result == false) - { - continue; - } - curtainData.DeleteCloseLimit = false; - } + //灏嗙獥甯樿皟鏁村埌鎸囧畾鐧惧垎姣� this.sendDiv = 2; curtainDevice.WcdGoToTiltValue(nowValue); - checking = false; } }); } @@ -536,14 +563,17 @@ { //纭褰撳墠浣嶇疆涓哄悎闄愪綅? string msg = Language.StringByID(R.MyInternationalizationString.uCommitCurtainCloseLimitMsg); - this.ShowMassage(ShowMsgType.Confirm, msg, async () => + this.ShowMassage(ShowMsgType.Confirm, msg, () => { - //鎵ц纭鍙婅鐩栧悎闄愪綅鐐� - var result = await HdlDeviceCurtainLogic.Current.CommitCurtainLimitPoint(curtainDevice, Rollershade.CurtainPrivateInstalledLimi.DownLimit, - curtainData.OpenLimitPersent, curtainData.CloseLimitPersent); + decimal openValue = ((decimal)curtainData.OpenLimitPersent / 100) * curtainData.CurtainLength; + decimal closeValue = ((decimal)curtainData.CloseLimitPersent / 100) * curtainData.CurtainLength; + if (openValue < 0) { openValue = 0; } + if (closeValue < 0) { closeValue = curtainData.CurtainLength; } + //鎵ц纭鍙婅鐩栦笂闄愪綅鐐� + var result = HdlDeviceCurtainLogic.Current.SetAutoOpenCurtainLimitPoint(curtainDevice, (int)openValue, (int)closeValue, curtainData.CurtainLength); + if (result == true) { - curtainData.DeleteCloseLimit = true; this.receiveCloseLimit = false; } }); @@ -566,6 +596,11 @@ rowReset.AddBottomLine(); rowReset.ButtonClickEvent += (sender, e) => { + //濡傛灉褰撳墠鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } //閲嶇疆鐢垫満灏嗗垵濮嬪寲{0}鏂瑰悜涓庨檺浣嶈缃紝纭缁х画锛� string msg = Language.StringByID(R.MyInternationalizationString.uResetElectricalMachineryMsg); msg = msg.Replace("{0}", "\r\n"); @@ -588,6 +623,10 @@ //姣�10鐨勯暱搴﹀ぇ姒傛槸2绉�,澶氶鐣�1娆″嚭鏉� int waitCount = ((curtainData.CurtainLength / 10) + 1) * 3; + if (waitCount < 12) + { + waitCount = 12; + } int timeCount = 0; while (timeCount <= waitCount) @@ -619,15 +658,26 @@ /// <returns></returns> private bool InitCurtainDefultData() { - //寮�鍚繘搴︽潯 - this.ShowProgressBar(); - this.curtainData = new CurtainData(); this.receiveOpenlimit = false; this.receiveCloseLimit = false; this.sendDiv = 0; - bool receiptData = false; + //濡傛灉褰撳墠鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + var data = ModelData.DeviceModelDataLogic.Current.GetCurtainLimitPoint(curtainDevice); + curtainData.Direction = data.Direction; + curtainData.CurtainLength = data.curtainLength; + curtainData.OpenLimitValue = data.upLimit; + curtainData.CloseLimitValue = data.downLimit; + return true; + } + + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + + int receiptDataCount = 0; string mainkeys = LocalDevice.Current.GetDeviceMainKeys(curtainDevice); HdlGatewayReceiveLogic.Current.AddAttributeEvent("CurtainDeviceAttribute", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (device) => { @@ -651,23 +701,25 @@ //姝e悜 curtainData.Direction = false; } + receiptDataCount++; } else if (attriBute.AttributeId == 1) { //绐楀笜鎬婚暱 curtainData.CurtainLength = attriBute.AttriButeData; + receiptDataCount++; } else if (attriBute.AttributeId == 16) { //寮�闄愪綅 curtainData.OpenLimitValue = attriBute.AttriButeData; + receiptDataCount++; } else if (attriBute.AttributeId == 17) { //鍚堥檺浣� curtainData.CloseLimitValue = attriBute.AttriButeData; - //鏁版嵁鎺ユ敹缁撴潫 - receiptData = true; + receiptDataCount++; } } }); @@ -675,7 +727,7 @@ HdlDeviceCurtainLogic.Current.SetGetCurtainLimitSettionComand(curtainDevice); int timeCount = 30; - while (receiptData == false && timeCount >= 0) + while (receiptDataCount != 4 && timeCount >= 0) { System.Threading.Thread.Sleep(100); timeCount--; @@ -694,21 +746,6 @@ } //绉婚櫎鐩戝惉 HdlGatewayReceiveLogic.Current.RemoveEvent("CurtainDeviceAttribute"); - - //澶囦唤绐楀笜鏁版嵁 - if (this.backupCurtainData == true) - { - this.backupCurtainData = false; - HdlThreadLogic.Current.RunThread(async () => - { - //鏂瑰悜澶囦唤 - await HdlDeviceCurtainLogic.Current.BackupCurtainDirection(curtainDevice, curtainData.Direction); - //闄愪綅澶囦唤 - int uplimit= (int)(curtainData.OpenLimitValue / (curtainData.CurtainLength * 1.0) * 100); - int downlimit = (int)(curtainData.CloseLimitValue / (curtainData.CurtainLength * 1.0) * 100); - await HdlDeviceCurtainLogic.Current.BackupCurtainLimitPoint(curtainDevice, uplimit, downlimit); - }); - } return true; } @@ -766,8 +803,6 @@ HdlGatewayReceiveLogic.Current.RemoveEvent("CurtainDeviceAttribute"); HdlGatewayReceiveLogic.Current.RemoveEvent("ReceiveLimitData"); - UserView.HomePage.Instance.ScrollEnabled = true; - base.CloseFormBefore(); } @@ -784,14 +819,6 @@ /// false:鐢垫満鏂瑰悜姝e悜锛泃rue:鐢垫満鏂瑰悜鍙嶅悜 /// </summary> public bool Direction = false; - /// <summary> - /// 鏄惁閲嶇疆寮�闄愪綅鐐� - /// </summary> - public bool DeleteOpenLimit = true; - /// <summary> - /// 鏄惁閲嶇疆鍚堥檺浣嶇偣 - /// </summary> - public bool DeleteCloseLimit = true; /// <summary> /// 寮�闄愪綅鐨勫�� /// </summary> -- Gitblit v1.8.0