From 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 14:16:20 +0800 Subject: [PATCH] 增加本地发送的重发机制 --- HDL_ON/Entity/Function/Light.cs | 189 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 131 insertions(+), 58 deletions(-) diff --git a/HDL_ON/Entity/Function/Light.cs b/HDL_ON/Entity/Function/Light.cs index e155396..48453e6 100644 --- a/HDL_ON/Entity/Function/Light.cs +++ b/HDL_ON/Entity/Function/Light.cs @@ -19,6 +19,9 @@ public Light() { } + + [Newtonsoft.Json.JsonIgnore] + FunctionAttributes trait_brightness; /// <summary> /// 浜害鍊� /// </summary> @@ -27,16 +30,47 @@ { get { - string b = "0"; - dicPropert.TryGetValue("brightness", out b); - return Convert.ToInt32(b == "" ? "0" : b); + if (trait_brightness == null) + { + trait_brightness = attributes.Find((obj) => obj.key == "brightness"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (trait_brightness == null) + { + trait_brightness = new FunctionAttributes() + { + key = "brightness", + value = new List<string> { "up", "down" }, + max = 100, + min = 0, + curValue = 0, + }; + } + if (trait_brightness.curValue.ToString() == "{}") + trait_brightness.curValue = 0; + } + return Convert.ToInt32(trait_brightness.curValue); } set { try { - dicPropert["brightness"] = value.ToString(); - MainPage.Log($"brightness 鏁版嵁鍒锋柊{value}."); + if (trait_brightness == null) + { + trait_brightness = attributes.Find((obj) => obj.key == "brightness"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (trait_brightness == null) + { + trait_brightness = new FunctionAttributes() + { + key = "brightness", + value = new List<string> { "up", "down" }, + max = 100, + min = 0, + curValue = 0 + }; + } + } + trait_brightness.curValue = value; } catch { @@ -45,28 +79,100 @@ } } + [Newtonsoft.Json.JsonIgnore] + FunctionAttributes trait_fadeTime; /// <summary> - /// RGB棰滆壊 - /// 255255255 + /// 浜害鍊� /// </summary> [Newtonsoft.Json.JsonIgnore] - public string color + public int fadeTime { get { - string c = "255255255"; - dicPropert.TryGetValue("color", out c); - if (c.Length != 9) + if (trait_fadeTime == null) { - dicPropert["color"] = "255255255"; + trait_fadeTime = attributes.Find((obj) => obj.key == "fade_time"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (trait_fadeTime == null) + { + trait_fadeTime = new FunctionAttributes() + { + key = "fade_time", + value = new List<string> { "up", "down" }, + max = 10, + min = 0, + curValue = 0 + }; + } } - return c.Length == 9 ? c : "255255255"; + int result = 0; + int.TryParse(trait_fadeTime.curValue.ToString(), out result); + return result; } set { try { - dicPropert["color"] = value.ToString(); + if (trait_fadeTime == null) + { + trait_fadeTime = attributes.Find((obj) => obj.key == "fade_time"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (trait_fadeTime == null) + { + trait_fadeTime = new FunctionAttributes() + { + key = "fade_time", + value = new List<string> { "up", "down" }, + max = 100, + min = 0, + curValue = 0 + }; + } + } + trait_fadeTime.curValue = value; + } + catch + { + } + } + } + + [Newtonsoft.Json.JsonIgnore] + public FunctionAttributes trait_color; + /// <summary> + /// RGB棰滆壊 + /// 255255255 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int color + { + get + { + if (trait_color == null) + { + trait_color = attributes.Find((obj) => obj.key == "color"); + //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂�� + if (trait_color == null) + { + trait_color = new FunctionAttributes() + { + key = "color", + value = new List<string> { "FFFFFF" }, + max = 0xFFFFFF, + min = 0x00000F, + curValue = 0x00000F + }; + } + if (trait_color.curValue.ToString() == "{}") + trait_color.curValue = 0x00000F; + } + return Convert.ToInt32(trait_color.curValue); + } + set + { + try + { + trait_color.curValue = value; } catch { @@ -75,12 +181,12 @@ } } [Newtonsoft.Json.JsonIgnore] - public byte redColor + public int redColor { get { try { - return Convert.ToByte(color.Substring(0, 3)); + return color >> 16; } catch (Exception ex) { @@ -92,7 +198,8 @@ { try { - dicPropert["color"] = dicPropert["color"].ToString().Remove(0, 3).Insert(0, value.ToString().PadLeft(3, '0')); + var rc = value << 16; + color = rc + (color & 0xFFFF); } catch (Exception ex) { @@ -101,13 +208,13 @@ } } [Newtonsoft.Json.JsonIgnore] - public byte greenColor + public int greenColor { get { try { - return Convert.ToByte(color.Substring(3, 3)); + return (color & 0xFFFF) >> 8; } catch (Exception ex) { @@ -119,7 +226,8 @@ { try { - dicPropert["color"] = dicPropert["color"].ToString().Remove(3, 3).Insert(3, value.ToString().PadLeft(3, '0')); + var gc = value << 8; + color = gc + (color & 0xFF00FF); } catch (Exception ex) { @@ -128,13 +236,13 @@ } } [Newtonsoft.Json.JsonIgnore] - public byte blueColor + public int blueColor { get { try { - return Convert.ToByte(color.Substring(6, 3)); + return color & 0xFF; } catch (Exception ex) { @@ -146,48 +254,13 @@ { try { - dicPropert["color"] = dicPropert["color"].ToString().Remove(6, 3).Insert(6, value.ToString().PadLeft(3, '0')); + color = value + (color & 0xFFFF00); } catch (Exception ex) { MainPage.Log($"set blue color error : {ex.Message}"); } } - } - - - /// <summary> - /// 鎷兼帴銆佽幏鍙朅鍗忚鎿嶄綔鏁版嵁 - /// </summary> - public override JObject GetSendJObject(CommandType_A command ) - { - var sendJob = new JObject(); - if (command == CommandType_A.write) - { - - sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } }; - JObject data = null; - switch (functionType) - { - case FunctionType.Relay: - data = new JObject { { "sid", sid }, { "switch", on_off } }; - break; - case FunctionType.Dimmer: - data = new JObject { { "sid", sid }, { "brightness", brightness } }; - break; - case FunctionType.RGB: - data = new JObject { { "sid", sid }, { "brightness", brightness }, { "color", color } }; - break; - } - sendJob.Add("objects", data); - } - else if (command == CommandType_A.read) - { - sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command.ToString() }, { "Type", "device" } }; - var data = new JObject {{ "sid", sid } }; - sendJob.Add("objects", data); - } - return sendJob; } } } -- Gitblit v1.8.0