陈嘉乐
2021-03-10 1d1cad99a27c9f644c84eb3d376c70bd30a55879
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
@@ -8,9 +8,39 @@
{
    public class Method
    {
        /// <summary>
        /// 管理位置
        /// </summary>
        /// <param name="control">当前设备</param>
        /// <param name="action">回调函数</param>
        public void ManagementPosition(Entity.Function control, Action action)
        {
            var view = new ChooseRoomPage(control, action);
            MainPage.BasePageView.AddChidren(view);
            view.LoadPage();
            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
        }
        /// <summary>
        /// 修改名称
        /// </summary>
        /// <param name="tipText">提示文本</param>
        /// <param name="list">当前存在名称列表</param>
        /// <param name="currName">当前名称</param>
        /// <param name="action">回调函数</param>
        public void EditControlName(int tipText ,List<string> list, string currName, Action<string, Dialog> action,Action actionCancel, bool tag=false)
        {
            new View.TipView().InputBox(StringId.editName, currName, StringId.nameNull, StringId.NameAlreadyExists, list, (text, view
                ) =>
            {
                action(text,view);
            }, () => { actionCancel(); }, tag);
        }
        /// <summary>
        /// 添加遥控器的方法
        /// </summary>
        /// <param name="frameLayout">log图标加载界面</param>
        /// <param name="action">回调函数</param>
        public void AddControl(FrameLayout frameLayout, Action<Control> action)
        {
            View.TipView tipView = new View.TipView();
@@ -36,8 +66,9 @@
        /// <summary>
        /// 发送遥控器命令方法
        /// </summary>
        /// <param name="control"></param>
        /// <param name="frame"></param>
        /// <param name="control">发送参数对象</param>
        /// <param name="frame">log图标加载界面</param>
        /// <param name="action">回调函数</param>
        public void ThreadAddControl(Control control, FrameLayout frame, Action<Control> action)
        {
            DAL.Server.ResponsePackNew responsePackNew = null;
@@ -48,7 +79,12 @@
            {
                try
                {
                    //发送添加命令
                    responsePackNew = PirSend.Add(control);
                }
                catch { }
                finally
@@ -59,19 +95,32 @@
                        if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                        {
                            string sid = responsePackNew.Data.ToString();
                            var mqttdate = MqttDate(sid);
                            var mqttdate =MqttDate(sid);
                            ///这里:监听MTTP推送下来主题,才知道是否添加成功
                            if (mqttdate != null)
                            {
                                ///这里:监听MTTP推送下来主题,才知道是否添加成功
                                control.sid = sid;
                                //休眠500毫秒,为等待云端创建deviceid;
                                System.Threading.Thread.Sleep(500);
                                GetControl(frame, control,(device)=> {
                                GetControl(frame, control, (device) =>
                                {
                                    if (device != null)
                                    {
                                        control.deviceId = device.deviceId;
                                        frame.RemoveFromParent();//添加成功关闭弹窗
                                        action(control);
                                    }
                                    else
                                    {
                                        //读取deviceid返回错误提示
                                        View.FailView failView = new View.FailView();
                                        failView.ShouError((view) =>
                                        {
                                            view.Close();
                                            ThreadAddControl(control, frame, action);
                                        });
                                    }
                                });
                            }
@@ -85,23 +134,24 @@
                                    ThreadAddControl(control, frame, action);
                                });
                            }
                        }
                        else
                        {
                            ErrorShow(responsePackNew);
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 获取红外设备列表
        /// </summary>
        /// <param name="frame">log图标加载界面</param>
        /// <param name="action">回调函数</param>
        public static void GetPirDeviceList(FrameLayout frame, Action action)
        {
            //清除之前列表;
@@ -173,6 +223,8 @@
        /// <summary>
        /// 获取遥控器列表
        /// </summary>
        /// <param name="frame">log图标加载界面</param>
        /// <param name="action">回调函数</param>
        public static void GetControlList(FrameLayout frame, Action action)
        {
            //加载log
@@ -243,10 +295,12 @@
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 获取遥控器详细
        /// 获取设备详情通过(spk,sid)
        /// </summary>
        /// <param name="frame">log图标加载界面</param>
        /// <param name="control">发送参数对象</param>
        /// <param name="action">回调函数</param>
        public void GetControl(FrameLayout frame, Control control, Action<Entity.Function> action)
        {
            Entity.Function function = null;
@@ -259,6 +313,7 @@
            {
                try
                {
                    // 获取设备详情通过(spk,sid)
                    responsePackNew = PirSend.GetinfoBySid(control);
                }
                catch { }
@@ -295,61 +350,66 @@
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// MQTT主题推送下来的数据(遥控器添加)
        /// MQTT主题推送下来的数据
        /// </summary>
        public static string addcontrondata = "";
        /// <summary>
        /// MQTT主题推送下来的数据(学习按键)
        /// </summary>
        public static string studybtndata = "";
        public static string mqttdata = "";
        /// <summary>
        /// 判断这个主题是否是添加遥控器主题
        /// </summary>
        /// <param name="sid">唯一标识</param>
        /// <param name="timeValue">等待时间值</param>
        /// <returns></returns>
        public Cloud MqttDate(string sid,int timeValue=10)
        public Cloud MqttDate(string sid, int timeValue = 10)
        {
            Cloud cloud=null;
            Cloud cloud = null;
            var dateTime = DateTime.Now;
            while ((DateTime.Now - dateTime).TotalMilliseconds < timeValue * 1000)
            {
                if (!string.IsNullOrEmpty(addcontrondata))
                if (!string.IsNullOrEmpty(mqttdata))
                {
                   var cloudjson = Newtonsoft.Json.JsonConvert.DeserializeObject<Cloud>(addcontrondata);
                    for (int i = 0; i < cloudjson.objects.Count; i++)
                    try
                    {
                        var objects = cloudjson.objects[i];
                        if (sid == objects.sid)
                        var cloudjson = Newtonsoft.Json.JsonConvert.DeserializeObject<Cloud>(mqttdata);
                        for (int i = 0; i < cloudjson.objects.Count; i++)
                        {
                            cloud = cloudjson;
                            break;
                            var objects = cloudjson.objects[i];
                            if (sid == objects.sid)
                            {
                                cloud = cloudjson;
                                break;
                            }
                        }
                        break;
                    }
                    break;
                    catch { }
                }
            }
            return cloud;
        }
        /// <summary>
        /// 错误码提示
        /// </summary>
        /// <param name="responsePackNew"></param>
        public void ErrorShow(ResponsePackNew responsePackNew)
        /// <param name="str"></param>
        public void ErrorShow(ResponsePackNew responsePackNew,string str="")
        {
            if (responsePackNew != null && responsePackNew.Code == "14005")
            {
                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
            if (str == "删除遥控器") {
                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.delFail));
            }
            else
            {
                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                if (responsePackNew != null && responsePackNew.Code == "14005")
                {
                    new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
                }
                else
                {
                    new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                }
            }
        }