wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/Entity/Function/Curtain.cs
@@ -4,98 +4,12 @@
namespace HDL_ON.Entity
{
    public class Curtain : Function
    public class Curtain
    {
        /*
        窗帘属性列表:trait: [switch,openLevel,lock]
        属性   描述
        on_off   on/off/stop;
        openLevel   0-100;
        lock   boolean (Lock锁定控制)
        */
        public Curtain()
        public int GetPercent(Function function)
        {
            return Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Percent));
        }
        [Newtonsoft.Json.JsonIgnore]
        public Trait trait_openLevel;
        /// <summary>
        /// 开关百分比
        /// 0-100
        /// </summary>
        [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<string> { "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 数据刷新失败.");
                }
            }
        }
        /// <summary>
        /// 拼接、获取A协议操作数据
        /// </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.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;
        }
    }
}