From 9a0b765c583bd69929de3a7495138b3e878e4543 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 05 九月 2023 16:14:27 +0800
Subject: [PATCH] 0-10v更新,网关在线状态更新
---
HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs | 180 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 113 insertions(+), 67 deletions(-)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs
index 4d0bc00..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}");
- }
- }));
+ }
}
@@ -88,7 +134,7 @@
/// </summary>
void LoadColorChangeEvent()
{
- if (!function.online)
+ if (!function.isOnline())
{
new Tip()
{
@@ -218,7 +264,7 @@
dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
{
- if (!function.online)
+ if (!function.isOnline())
{
new Tip()
{
@@ -235,7 +281,7 @@
Control.Ins.SendWriteCommand(function, d);
};
- if (function.online)
+ if (function.isOnline())
{
dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
{
@@ -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!!");
+ // }
+ //}
};
}
}
@@ -339,7 +385,7 @@
{
btnRestoredPoint.MouseUpEventHandler = (sender, e) =>
{
- if (!function.online)
+ if (!function.isOnline())
{
return;
}
--
Gitblit v1.8.0