From b69d7735274b8d0f741da8a6bb8b8e1347477a5a Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 19 三月 2020 17:14:16 +0800 Subject: [PATCH] 20200319 --- HDL_ON/DriverLayer/Control.cs | 177 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 123 insertions(+), 54 deletions(-) diff --git a/HDL_ON/DriverLayer/Control.cs b/HDL_ON/DriverLayer/Control.cs index b2e310e..f1eb051 100644 --- a/HDL_ON/DriverLayer/Control.cs +++ b/HDL_ON/DriverLayer/Control.cs @@ -1,32 +1,31 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using HDL_ON.DAL; -using HDL_ON.DAL.Net; using HDL_ON.Entity; -using HDL_ON.Entity.Enumerative; -using HDL_ON.UI; using Newtonsoft.Json.Linq; +using Shared; namespace HDL_ON { public partial class Control { - - public static byte[] Send(JObject commandString, Function function, int sendCount) + /// <summary> + /// 鍙戦�佸懡浠� + /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧锛� + /// 涓嶆槸A鍗忚锛岃嚜鍔ㄨ浆鍖朾us鍛戒护鏁版嵁 + /// </summary> + /// <param name="commandString"></param> + /// <param name="function"></param> + /// <returns></returns> + public static void Send(string commandType, Function function) { - if (string.IsNullOrEmpty(function.A_Protocol)) + if (function.bus_Data!=null) { try { - var subnetID = Convert.ToByte(JObject.FromObject(function.Bus_Protocol).GetValue("SubnetID")); - var deviceID = Convert.ToByte(JObject.FromObject(function.Bus_Protocol).GetValue("DeviceID")); - byte[] bytes = DataConversion_Bus(commandString); - - var sss = ControlBytesSendHasReturn(Command.SetSingleLight, subnetID, deviceID, bytes, sendCount); - return sss; + //var ssd = function.GetSendJObject(commandString); + ControlBusData(function, commandType); + //return revBytes; } catch (Exception ex) { @@ -35,22 +34,21 @@ } else { - var jObject = new JObject { - { "DeviceAddr", 11}, - { "Epoint", 22}, - { "Cluster_ID", 8 }, - { "Command", 33}, - { "SendMode", 2 } - }; - var data = new JObject { - { "Level", 1 }, - { "TransitionTime", 0 } - }; - jObject.Add("Data", data); - return null; + //var jObject = new JObject { + //{ "DeviceAddr", 11}, + //{ "Epoint", 22}, + // { "Cluster_ID", 8 }, + // { "Command", 33}, + // { "SendMode", 2 } + //}; + //var data = new JObject { + // { "Level", 1 }, + // { "TransitionTime", 0 } + //}; + //jObject.Add("Data", data); + //return revBytes; } - return null; } @@ -59,7 +57,7 @@ /// </summary> /// <param name="commandString"></param> /// <returns></returns> - static byte[] DataConversion_Bus(JObject commandString) + static void ControlBusData(Function function,string command)//JObject commandString,BusData bus_Data, { //鍙嶉: //{ @@ -67,35 +65,106 @@ //鈥淭ype鈥�:鈥漝evice鈥�, "objects": [{ //"sid": "0001002019101209000025670100010001鈥�, "statue": "success鈥� //}] } - byte[] sendBytes; - - switch (commandString.GetValue("Command").ToString()) + try { - case "write": - var jobj = JObject.FromObject(commandString.GetValue("objects")); - var functionType = jobj.GetValue("sid").ToString().Substring(24, 2); - switch ((FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(functionType))) - { - case FunctionType.Light: - if (jobj.ContainsKey("Switch"))//缁х數鍣� - { - if (jobj.ContainsKey("Dimmer")) - {//璋冨厜鍣� + var subnetId = function.bus_Data.SubnetID; + var deviceId = function.bus_Data.DeviceID; + var loopId = function.bus_Data.LoopID; - } - else//缁х數鍣� + //var jobj = JObject.FromObject(commandString.GetValue("objects")); + //var functionType = jobj.GetValue("sid").ToString().Substring(22, 2);//鎴彇24锛�25瀛楃鑾峰彇鎺у埗鐨勮澶囩殑绫诲瀷 + switch (command) + { + case "write": + switch (function.functionCategory) + { + case FunctionType.Light: + var light = function as Light; + switch (light.functionType) { - + case "RGB": + byte b = 100;//寮�鍏虫搷浣滀緷鎹畂n_off瀛楁锛屽疄闄呭紑鍏冲�间緷鎹産rightness锛屽綋on_off涓烘墦寮�锛宐rightness涓嶈兘涓�0 + if (light.on_off == 0) + { + b = 0; + } + else + { + b = (byte)light.brightness == 0 ? (byte)100 : (byte)light.brightness; + } + var bytes = new byte[] { function.bus_Data.LoopID, + b, + 254, 0,0,3, + light.redColor,light.greenColor, + light.blueColor, + 0,0}; + ControlBytesSend(Command.SetLogicLoopColor, subnetId, deviceId, bytes); + break; + case "Dimmer": + byte b1 = 100; + if (light.on_off == 0) + { + b1 = 0; + } + else + { + b1 = (byte)light.brightness == 0 ? (byte)100 : (byte)light.brightness; + } + ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { + function.bus_Data.LoopID, + b1, + 0, 0 }); + break; + case "Relay": + ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, light.on_off == 1 ? (byte)100 : (byte)0, 0, 0 }); + break; } - } - break; - } - break; + break; + case FunctionType.Curtain: + //if (jobj.ContainsKey("Curtain"))//on/off/stop + //{ + // byte state = 0; + // switch (jobj.GetValue("switch").ToString()) + // { + // case "stop": + // state = 0; + // break; + // case "on": + // state = 1; + // break; + // case "off": + // state = 2; + // break; + // } + // return ControlBytesSendHasReturn(Command.SetCurtainModelStutas, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, state }); + //} + //else if (jobj.ContainsKey("MotorCurtain") || jobj.ContainsKey("RollingShutter")) + //{ + // var state = Convert.ToByte(jobj.GetValue("openLevel").ToString()); + // return ControlBytesSendHasReturn(Command.SetCurtainModelStutas, subnetId, deviceId, new byte[] { 17, state }); + //} + break; + } + break; + case "read": + //switch ((FunctionType)Enum.ToObject(typeof(FunctionType), Convert.ToInt32(functionType))) + //{ + // case FunctionType.Light: + // if (jobj.ContainsKey("switch"))//缁х數鍣� + // { + // var state = jobj.GetValue("switch").ToString() == "0" ? (byte)0 : (byte)100; + // var bytes = new byte[] { Convert.ToByte(loopId), state, 0, 0 }; + // return ControlBytesSendHasReturn(Command.ReadLightSingleLoopBrightness, subnetId, deviceId, bytes); + // } + // break; + //} + break; + } + } - - - return null; + catch (Exception ex) { + MainPage.Log($"DataConversion_Bus Erorr : {ex.Message}"); + } } - } } \ No newline at end of file -- Gitblit v1.8.0