| | |
| | | using System; |
| | | using HDL_ON.DAL.Server; |
| | | using Shared; |
| | | using System.Collections.Generic; |
| | | using Newtonsoft.Json.Linq; |
| | | |
| | | namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice |
| | | { |
| | |
| | | /// <summary> |
| | | /// 添加遥控器的方法 |
| | | /// </summary> |
| | | public void AddControl() |
| | | public void AddControl(FrameLayout frameLayout, Action<Control> action) |
| | | { |
| | | View.TipView tipView = new View.TipView(); |
| | | tipView.InputBox("", (s, dialog) => |
| | | { |
| | | ///清除之前列表数据 |
| | | Pir.BuottonList.Clear(); |
| | | if (!string.IsNullOrEmpty(s)) |
| | | { |
| | | Control control = new Control(); |
| | | control.name = s; |
| | | control.type = "learn"; |
| | | |
| | | ThreadAddControl(control,dialog); |
| | | tipView.InputBox(frameLayout, "", (name, frame) => |
| | | { |
| | | ///清除之前列表数据 |
| | | Pir.BuottonList.Clear(); |
| | | if (!string.IsNullOrEmpty(name)) |
| | | { |
| | | Control control = new Control(); |
| | | control.name = name; |
| | | control.type = "learn"; |
| | | control.spk = "ir.learn"; |
| | | control.deviceId = Pir.currPir.deviceId; |
| | | ThreadAddControl(control, frame, action); |
| | | |
| | | |
| | | |
| | | } |
| | | },false); |
| | | } |
| | | }, false); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 发送遥控器命令方法 |
| | | /// </summary> |
| | | /// <param name="control"></param> |
| | | /// <param name="dialog"></param> |
| | | public void ThreadAddControl(Control control, Dialog dialog) { |
| | | /// <param name="frame"></param> |
| | | public void ThreadAddControl(Control control, FrameLayout frame, Action<Control> action) |
| | | { |
| | | |
| | | DAL.Server.ResponsePackNew responsePackNew = null; |
| | | Loading loading = new Loading(); |
| | | dialog.AddChidren(loading); |
| | | frame.AddChidren(loading); |
| | | loading.Start(); |
| | | new System.Threading.Thread(() => |
| | | { |
| | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | loading.Hide(); |
| | | //if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") |
| | | //{ |
| | | ///这里:监听MTTP推送下来主题,才知道是否添加成功 |
| | | dialog.Close();//添加成功关闭弹窗 |
| | | AddButton addButton = new AddButton(); |
| | | MainPage.BasePageView.AddChidren(addButton); |
| | | addButton.Show(control); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") |
| | | { |
| | | bool bool_if = false; |
| | | string sid = responsePackNew.Data.ToString(); |
| | | var mqttdate = MqttDate(); |
| | | for (int i = 0; i < mqttdate.objects.Count; i++) { |
| | | var objects = mqttdate.objects[i]; |
| | | if (sid == objects.sid) { |
| | | bool_if = true; |
| | | break; |
| | | } |
| | | } |
| | | if (bool_if) |
| | | { |
| | | control.deviceId = mqttdate.id; |
| | | ///这里:监听MTTP推送下来主题,才知道是否添加成功 |
| | | frame.RemoveFromParent();//添加成功关闭弹窗 |
| | | action(control); |
| | | } |
| | | else |
| | | { |
| | | //监听Mqtt推送下来状态码做提示 |
| | | View.FailView failView = new View.FailView(); |
| | | failView.ShouError((view) => |
| | | { |
| | | view.Close(); |
| | | ThreadAddControl(control, frame, action); |
| | | }); |
| | | } |
| | | |
| | | //监听Mqtt推送下来状态码做提示 |
| | | //View.FailView failView = new View.FailView(); |
| | | //failView.ShouError((view) => { |
| | | // view.Close(); |
| | | // ThreadAddControl(control, dialog); |
| | | //}); |
| | | //} |
| | | //else |
| | | //{ |
| | | // ErrorShow(responsePackNew); |
| | | //} |
| | | |
| | | } |
| | | else |
| | | { |
| | | ErrorShow(responsePackNew); |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取红外设备列表 |
| | | /// </summary> |
| | | public static void GetPirDeviceList(FrameLayout frame, Action action) |
| | | { |
| | | //清除之前列表; |
| | | Pir.pirDeviceList.Clear(); |
| | | //加载log |
| | | Loading loading = new Loading(); |
| | | frame.AddChidren(loading); |
| | | HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null; |
| | | loading.Start(); |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | responsePackNew = PirSend.GetDeviceList("ir.module"); |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | loading.Hide(); |
| | | try |
| | | { |
| | | if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") |
| | | { |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(responsePackNew.Data.ToString()); |
| | | string list = jobject["list"].ToString(); |
| | | |
| | | var jArray = Newtonsoft.Json.Linq.JArray.Parse(list); |
| | | for (int a = 0; a < jArray.Count; a++) |
| | | { |
| | | var jay = jArray[a]; |
| | | string spk = jay["spk"].ToString(); |
| | | if (spk == "ir.module") |
| | | { |
| | | //数据返序列化为Logic对象 |
| | | var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay); |
| | | var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Pir>(str); |
| | | if (pirJosn != null) |
| | | { |
| | | if (null == Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId)) |
| | | { |
| | | |
| | | Pir.pirDeviceList.Add(pirJosn); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | GetControlList(frame, action); |
| | | |
| | | } |
| | | else |
| | | { |
| | | Method method = new Method(); |
| | | method.ErrorShow(responsePackNew); |
| | | } |
| | | } |
| | | catch { } |
| | | |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 获取遥控器列表 |
| | | /// </summary> |
| | | public static void GetControlList(FrameLayout frame, Action action) |
| | | { |
| | | //加载log |
| | | Loading loading = new Loading(); |
| | | frame.AddChidren(loading); |
| | | HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null; |
| | | loading.Start(); |
| | | new System.Threading.Thread(() => |
| | | { |
| | | try |
| | | { |
| | | for (int i = 0; i < Pir.pirDeviceList.Count; i++) |
| | | { |
| | | var pirDevice = Pir.pirDeviceList[i]; |
| | | try |
| | | { |
| | | responsePackNew = PirSend.ControlList(pirDevice); |
| | | |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | try |
| | | { |
| | | if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") |
| | | { |
| | | var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString()); |
| | | for (int a = 0; a < jArray.Count; a++) |
| | | { |
| | | var jay = jArray[a]; |
| | | //数据返序列化为Logic对象 |
| | | var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay); |
| | | var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str); |
| | | if (pirJosn != null) |
| | | { |
| | | if (null == pirDevice.FunctioList.Find((c) => c.sid == pirJosn.sid)) |
| | | { |
| | | pirDevice.FunctioList.Add(pirJosn); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //Method method = new Method(); |
| | | //method.ErrorShow(responsePackNew); |
| | | } |
| | | } |
| | | catch { } |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | loading.Hide(); |
| | | action(); |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// MQTT主题推送下来的数据(遥控器添加) |
| | | /// </summary> |
| | | public static string addcontronsid = ""; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public Cloud MqttDate() |
| | | { |
| | | var dateTime = DateTime.Now; |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 5 * 1000) |
| | | { |
| | | if (!string.IsNullOrEmpty(addcontronsid)) |
| | | { |
| | | break; |
| | | } |
| | | |
| | | } |
| | | return PushData(); |
| | | } |
| | | |
| | | public Cloud PushData() |
| | | { |
| | | Cloud cloud = new Cloud(); |
| | | if (addcontronsid != "") |
| | | { |
| | | //var date = Newtonsoft.Json.JsonConvert.SerializeObject(addcontronsid); |
| | | cloud = Newtonsoft.Json.JsonConvert.DeserializeObject<Cloud>(addcontronsid); |
| | | |
| | | } |
| | | return cloud; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 错误码提示 |
| | | /// </summary> |
| | | /// <param name="responsePackNew"></param> |
| | | public void ErrorShow(ResponsePackNew responsePackNew) |
| | | public void ErrorShow(ResponsePackNew responsePackNew) |
| | | { |
| | | |
| | | if (responsePackNew != null && responsePackNew.Code == "14005") |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | [Serializable] |
| | | public class Cloud |
| | | { |
| | | /// <summary> |
| | | /// 设备id |
| | | /// </summary> |
| | | public string id = string.Empty; |
| | | public List<Objects> objects = new List<Objects>(); |
| | | public string time_stamp = string.Empty; |
| | | |
| | | |
| | | } |
| | | [Serializable] |
| | | public class Objects |
| | | { |
| | | public string sid = string.Empty; |
| | | public string spk = string.Empty; |
| | | } |
| | | |
| | | } |