From 611786df5108dca0bdcff03834cc285cba4b8e61 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 13 十月 2020 16:48:43 +0800
Subject: [PATCH] 2020-10-13-1
---
HDL_ON/Entity/Function/Light.cs | 171 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 141 insertions(+), 30 deletions(-)
diff --git a/HDL_ON/Entity/Function/Light.cs b/HDL_ON/Entity/Function/Light.cs
index 6d3c091..b50e5fb 100644
--- a/HDL_ON/Entity/Function/Light.cs
+++ b/HDL_ON/Entity/Function/Light.cs
@@ -19,6 +19,9 @@
public Light()
{
}
+
+ [Newtonsoft.Json.JsonIgnore]
+ public Trait trait_brightness;
/// <summary>
/// 浜害鍊�
/// </summary>
@@ -27,15 +30,46 @@
{
get
{
- string b = "0";
- dicPropert.TryGetValue("brightness", out b);
- return Convert.ToInt32(b == "" ? "0" : b);
+ if (trait_brightness == null)
+ {
+ trait_brightness = function.Find((obj) => obj.attri == "brightness");
+ //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+ if (trait_brightness == null)
+ {
+ trait_brightness = new Trait()
+ {
+ attri = "brightness",
+ value = new List<string> { "up", "down" },
+ max = 100,
+ min = 0,
+ };
+ }
+ trait_brightness.curValues = trait_brightness.min;
+ }
+ return Convert.ToInt32(trait_brightness.curValues);
}
set
{
try
{
- dicPropert["brightness"] = value.ToString();
+ if (trait_brightness == null)
+ {
+ trait_brightness = function.Find((obj) => obj.attri == "brightness");
+ //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+ if (trait_brightness == null)
+ {
+ trait_brightness = new Trait()
+ {
+ attri = "brightness",
+ value = new List<string> { "up", "down" },
+ max = 100,
+ min = 0,
+ };
+ }
+ trait_brightness.curValues = trait_brightness.min;
+ }
+ trait_brightness.curValues = value;
+ MainPage.Log($"brightness 鏁版嵁鍒锋柊{value}.");
}
catch
{
@@ -44,28 +78,40 @@
}
}
+ [Newtonsoft.Json.JsonIgnore]
+ public Trait trait_color;
/// <summary>
/// RGB棰滆壊
/// 255255255
/// </summary>
[Newtonsoft.Json.JsonIgnore]
- public string color
+ public int color
{
get
{
- string c = "255255255";
- dicPropert.TryGetValue("color", out c);
- if (c.Length != 9)
+ if (trait_color == null)
{
- dicPropert["color"] = "255255255";
+ trait_color = function.Find((obj) => obj.attri == "color");
+ //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+ if (trait_color == null)
+ {
+ trait_color = new Trait()
+ {
+ attri = "color",
+ value = new List<string> { "FFFFFF" },
+ max = 0xFFFFFF,
+ min = 0x000000,
+ };
+ }
+ trait_color.curValues = trait_color.min;
}
- return c.Length == 9 ? c : "255255255";
+ return Convert.ToInt32(trait_color.curValues);
}
set
{
try
{
- dicPropert["color"] = value.ToString();
+ trait_color.curValues = value;
}
catch
{
@@ -74,12 +120,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)
{
@@ -91,7 +137,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)
{
@@ -100,13 +147,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)
{
@@ -118,7 +165,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)
{
@@ -127,13 +175,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)
{
@@ -145,7 +193,7 @@
{
try
{
- dicPropert["color"] = dicPropert["color"].ToString().Remove(6, 3).Insert(6, value.ToString().PadLeft(3, '0'));
+ color = value + (color & 0xFFFF00);
}
catch (Exception ex)
{
@@ -158,35 +206,98 @@
/// <summary>
/// 鎷兼帴銆佽幏鍙朅鍗忚鎿嶄綔鏁版嵁
/// </summary>
- public override JObject GetSendJObject(string command )
+ public override JObject GetSendJObject(CommandType_A command )
{
var sendJob = new JObject();
- if (command == "write")
+ if (command == CommandType_A.write)
{
- sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command }, { "Type", "device" } };
- JObject data = null;
+#if DEBUG
+ switch(sid)
+ {
+ case "00010114051D0A300C92C902020200010001":
+ sid = "00010114041710193123D402020200010001";
+ break;
+ case "00010114051D0A300C92C902020200020001":
+ sid = "00010114041710193123D402020200020001";
+ break;
+ case "00010114051D0A300C92C902020200030001":
+ sid = "00010114041710193123D402020200030001";
+ break;
+ case "00010114051D0A300C92C902020200040001":
+ sid = "00010114041710193123D402020200040001";
+ break;
+ }
+#endif
+
+ sendJob = new JObject { { "vendor_code", vendor_code }, { "command", command.ToString() }, { "type", "device" } };
+ JObject data = new JObject { { "sid", sid } };
+ sendJob.Add("objects", data);
+ List<ControlData> controlData = new List<ControlData>();
switch (functionType)
{
case FunctionType.Relay:
- data = new JObject { { "sid", sid }, { "switch", on_off } };
+ controlData.Add(new ControlData()
+ {
+ name = "on_off",
+ data_type = "Bool",
+ value = on_off
+ });
break;
case FunctionType.Dimmer:
- data = new JObject { { "sid", sid }, { "brightness", brightness } };
+ controlData.Add(new ControlData()
+ {
+ name = "on_off",
+ data_type = "Bool",
+ value = on_off
+ });
+ controlData.Add(new ControlData()
+ {
+ name = "brightness",
+ data_type = "int",
+ value = brightness.ToString(),
+ });
break;
case FunctionType.RGB:
- data = new JObject { { "sid", sid }, { "brightness", brightness }, { "color", color } };
+ controlData.Add(new ControlData()
+ {
+ name = "on_off",
+ data_type = "Bool",
+ value = on_off
+ });
+ controlData.Add(new ControlData()
+ {
+ name = "brightness",
+ data_type = "int",
+ value = brightness.ToString(),
+ });
+ controlData.Add(new ControlData()
+ {
+ name = "color",
+ data_type = "int",
+ value = color.ToString(),
+ });
break;
}
- sendJob.Add("objects", data);
+
+ AProtocolEntity ape = new AProtocolEntity()
+ {
+ command = command.ToString(),
+ vendor_code = vendor_code,
+ type = "device_sid",
+ };
+ ape.ControlFunction(sid, controlData);
+ sendJob = JObject.FromObject(ape);
+
}
- else if (command == "read")
+ else if (command == CommandType_A.read)
{
- sendJob = new JObject { { "vendor_code", vendor_code }, { "Command", command }, { "Type", "device" } };
+ 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