using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; namespace HDL_ON.Entity { public class Curtain : Function { /* 窗帘属性列表:trait: [switch,openLevel,lock] 属性 描述 on_off on/off/stop; openLevel 0-100; lock boolean (Lock锁定控制) */ public Curtain() { } [Newtonsoft.Json.JsonIgnore] public Trait trait_openLevel; /// /// 开关百分比 /// 0-100 /// [Newtonsoft.Json.JsonIgnore] public int openLevel { get { try { if(trait_openLevel==null) { trait_openLevel = function.Find((obj) => obj.attri == "openLevel"); if (trait_openLevel == null) { trait_openLevel = new Trait() { attri = "openLevel", value = new List { "up", "down" }, max = 100, min = 0, }; } trait_openLevel.curValues = trait_openLevel.min; } return Convert.ToInt32( trait_openLevel.curValues); } catch { MainPage.Log("openLevel 数据获取失败."); return 0; } } set { try { trait_openLevel.curValues = value; } catch { MainPage.Log("openLevel 数据刷新失败."); } } } /// /// 拼接、获取A协议操作数据 /// 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.Curtain: data = new JObject { { "on_off", on_off }, { "sid", sid } }; break; case FunctionType.MotorCurtain: case FunctionType.RollingShutter: data = new JObject { { "openLevel", openLevel}, { "sid", sid } }; 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; } } }