From cc37cf55c02da9e49eab9859ed72f146dee6f635 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 11 九月 2023 14:17:55 +0800 Subject: [PATCH] Merge branch 'Dev-Branch' into wjc --- HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs | 172 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 109 insertions(+), 63 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs index c2bd28a..369d3b9 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs @@ -7,64 +7,110 @@ public partial class RGBWPage { /// <summary> + /// 閫氱煡鏇存柊鐣岄潰鐨勬椂闂� + /// </summary> + DateTime notiyUpdateTime = DateTime.MinValue; + System.Threading.Thread updateUiThread; + object lockObj = new object(); + /// <summary> /// 鏇存柊鍔熻兘鐘舵�� /// </summary> public static void UpdataStates(Function updateTemp) { - Application.RunOnMainThread((() => + if (bodyView == null) { - try + return; + } + lock (bodyView.lockObj) + { + MainPage.Log($"鏀跺埌鏇存柊" + DateTime.Now.Ticks); + bodyView.notiyUpdateTime = DateTime.Now; + if (bodyView.updateUiThread == null) { - if (bodyView == null) - return; - if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid) + bodyView.updateUiThread = new System.Threading.Thread(() => { + while (true) + { + System.Threading.Thread.Sleep(1500); + if (bodyView == null) + { + return; + } + if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime) + { + MainPage.Log("娌℃湁鏂版暟鎹紝鏇存柊UI"); + break; + } + else + { + MainPage.Log("鏈夋柊鏁版嵁锛岀户缁瓑寰�"); + } + } + Application.RunOnMainThread(() => + { + try + { + if (bodyView == null) + return; + if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid) + { - if (updateTemp.trait_on_off.curValue.ToString() == "on") - { - //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� - if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheel.png") - { - bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png"; + if (updateTemp.trait_on_off.curValue.ToString() == "on") + { + //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� + if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheel.png") + { + bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png"; + } + bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; + bodyView.btnSwitch.IsSelected = true; + if (!bodyView.onDimmerBar) + { + bodyView.dimmerBar.Progress = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Brightness)); + } + } + //鐘舵�佷竴鏍锋椂,涓嶅啀鍒锋柊瑙嗗浘 + else if (updateTemp.trait_on_off.curValue.ToString() == "off" && bodyView.btnSwitch.IsSelected == true) + { + //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� + if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheelGray.png") + { + bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; + } + //bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; + bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.PromptingColor2; + bodyView.btnSwitch.IsSelected = false; + //鑹茬洏鐨勫渾鐐归殣钘� + bodyView.btnWhiteRound.Visible = false; + } + bodyView.btnCurColor.BackgroundColor = (uint)(0xFF000000 + bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGBW))); + bodyView.lastColor = bodyView.lightTemp.GetRGBWbytes(updateTemp); + if (bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGBW)) == 16777215 && bodyView.btnCurColor.BorderColor != 0x00000000) + { + bodyView.btnCurColor.BorderColor = CSS.CSS_Color.PromptingColor2; + } + else + { + bodyView.btnCurColor.BorderColor = 0x00000000; + } + } } - bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; - bodyView.btnSwitch.IsSelected = true; - if (!bodyView.onDimmerBar) + catch (Exception ex) { - bodyView.dimmerBar.Progress = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Brightness)); + MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}"); } - } - //鐘舵�佷竴鏍锋椂,涓嶅啀鍒锋柊瑙嗗浘 - else if (updateTemp.trait_on_off.curValue.ToString() == "off" && bodyView.btnSwitch.IsSelected == true) - { - //瑙e喅閮ㄥ垎瀹夊崜鎵嬫満锛屽埛鏂板浘鐗囨椂浼氬彉灏忛棶棰� - if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheelGray.png") + finally { - bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; + bodyView.updateUiThread = null; } - //bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png"; - bodyView.dimmerBar.ProgressBarColor = CSS.CSS_Color.PromptingColor2; - bodyView.btnSwitch.IsSelected = false; - //鑹茬洏鐨勫渾鐐归殣钘� - bodyView.btnWhiteRound.Visible = false; - } - bodyView.btnCurColor.BackgroundColor = (uint)(0xFF000000 + bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGBW))); - bodyView.lastColor = bodyView.lightTemp.GetRGBWbytes(updateTemp); - if (bodyView.lightTemp.GetRGBcolor(updateTemp.GetAttrState(FunctionAttributeKey.RGBW)) == 16777215 && bodyView.btnCurColor.BorderColor != 0x00000000) - { - bodyView.btnCurColor.BorderColor = CSS.CSS_Color.PromptingColor2; - } - else - { - bodyView.btnCurColor.BorderColor = 0x00000000; - } - } + }); + + + bodyView.updateUiThread.IsBackground = true; + bodyView.updateUiThread.Start(); + }); } - catch (Exception ex) - { - MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}"); - } - })); + } } @@ -256,25 +302,25 @@ d.Add(FunctionAttributeKey.Brightness, e.ToString()); Control.Ins.SendWriteCommand(function, d); } - else - { - if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) - { - function.refreshTime = DateTime.Now; - new System.Threading.Thread(() => - { - //Control.Send(CommandType_A.write, function); - System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); - d.Add(FunctionAttributeKey.Brightness, e.ToString()); - Control.Ins.SendWriteCommand(function, d); - }) - { IsBackground = true }.Start(); - } - else - { - MainPage.Log("skip dimmer control!!"); - } - } + //else + //{ + // if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds) + // { + // function.refreshTime = DateTime.Now; + // new System.Threading.Thread(() => + // { + // //Control.Send(CommandType_A.write, function); + // System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + // d.Add(FunctionAttributeKey.Brightness, e.ToString()); + // Control.Ins.SendWriteCommand(function, d); + // }) + // { IsBackground = true }.Start(); + // } + // else + // { + // MainPage.Log("skip dimmer control!!"); + // } + //} }; } } -- Gitblit v1.8.0