HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirQualitySensorDetailCardForm.cs
@@ -6,564 +6,565 @@
namespace Shared.Phone.MainPage.ControlForm
{
  /// <summary>
  /// 空气质量传感器类型的深度卡片界面
  /// </summary>
  public class DeviceAirQualitySensorDetailCardForm : DeviceDetailCardCommonForm
  {
    #region ■ 变量声明___________________________
    /// <summary>
    /// 界面上可以操作的控件
    /// listControl【0】:btnHumidityStatus
    ///listControl【1】: btnTemperatureStatus
    ///listControl【2】: btnPmStatus
    ///listControl【3】: btnPmUnit
    ///listControl【4】: btnHumidityUnit
    ///listControl【5】: btnTemperatureUnit
    ///listControl【6】: btnCo2Status
    ///listControl【7】: btnCo2Unit
    /// 空气质量传感器类型的深度卡片界面
    /// </summary>
    private List<ButtonBase> listControl = new List<ButtonBase>();
    /// <summary>
    /// 界面上可以操作的控件
    /// listFrameLayout【0】:frameHumidityTextFrameLayout
    ////listFrameLayout【0】:frameTemperatureTextFrameLayout
    ///listFrameLayout【0】:framePmTextFrameLayout
    ///listFrameLayout【0】:frameCo2TextFrameLayout
    /// </summary>
    private List<FrameLayout> listFrameLayout = new List<FrameLayout>();
    /// <summary>
    /// 控件
    /// </summary>
    private TemperatureSensor aqSensor = null;
    /// <summary>
    /// 状态控件
    /// </summary>
    private NormalViewControl btnStatu = null;
    /// <summary>
    /// 当前的文本
    /// </summary>
    private string CurrentText = string.Empty;
    /// <summary>
    /// 灯
    /// </summary>
    private Button btnLight = null;
    /// <summary>
    /// 设置灯
    /// </summary>
    NormalViewControl btnSetLight = null;
    NormalViewControl btnSetLightLine = null;
    /// <summary>
    /// 查看历史记录
    /// </summary>
    NormalViewControl btnHistoryText = null;
    /// <summary>
    /// 设备名称控件
    /// </summary>
    private NormalViewControl btnDeviceName = null;
    #endregion
    #region ■ 初始化_____________________________
    public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
    public class DeviceAirQualitySensorDetailCardForm : DeviceDetailCardCommonForm
    {
      //左滑不能
      this.ScrollEnabled = true;
      this.aqSensor = (TemperatureSensor)this.device;
      //每次进入这个界面,都读一下LED状态态。因为这个开关状态总是没收到,而其CO2,PM2.5,温湿度数据上报导致外面都检查状态标记为true
      aqSensor.SendSwitchStatuComand();
      //先清空
      this.listControl = new List<ButtonBase>();
      InitAirQualitySensorControl(frameWhiteBack);
      UpdateStatus();
    }
        #region ■ 变量声明___________________________
        /// <summary>
        /// 界面上可以操作的控件
        /// listControl【0】:btnHumidityStatus
        ///listControl【1】: btnTemperatureStatus
        ///listControl【2】: btnPmStatus
        ///listControl【3】: btnPmUnit
        ///listControl【4】: btnHumidityUnit
        ///listControl【5】: btnTemperatureUnit
        ///listControl【6】: btnCo2Status
        ///listControl【7】: btnCo2Unit
        /// </summary>
        private List<ButtonBase> listControl = new List<ButtonBase>();
        /// <summary>
        /// 界面上可以操作的控件
        /// listFrameLayout【0】:frameHumidityTextFrameLayout
        ////listFrameLayout【0】:frameTemperatureTextFrameLayout
        ///listFrameLayout【0】:framePmTextFrameLayout
        ///listFrameLayout【0】:frameCo2TextFrameLayout
        /// </summary>
        private List<FrameLayout> listFrameLayout = new List<FrameLayout>();
        /// <summary>
        /// 控件
        /// </summary>
        private TemperatureSensor aqSensor = null;
        /// <summary>
        /// 状态控件
        /// </summary>
        private NormalViewControl btnStatu = null;
        /// <summary>
        /// 当前的文本
        /// </summary>
        private string CurrentText = string.Empty;
        /// <summary>
        /// 灯
        /// </summary>
        private Button btnLight = null;
        /// <summary>
        /// 设置灯
        /// </summary>
        NormalViewControl btnSetLight = null;
        NormalViewControl btnSetLightLine = null;
        /// <summary>
        /// 查看历史记录
        /// </summary>
        NormalViewControl btnHistoryText = null;
        /// <summary>
        /// 设备名称控件
        /// </summary>
        private NormalViewControl btnDeviceName = null;
    /// <summary>
    /// 初始化空气质量传感器控件
    /// </summary>
    /// <param name="frameWhiteBack"></param>
    private void InitAirQualitySensorControl(FrameLayout frameWhiteBack)
    {
      DeviceDataUI(frameWhiteBack);
      //灯
      btnLight = new Button()
      {
        Width = Application.GetMinRealAverage(144),
        Height = Application.GetMinRealAverage(144),
        Y = Application.GetRealHeight(1031 - 5),
        Gravity = Gravity.CenterHorizontal,
        UnSelectedImagePath = "AirQualitySensor/light.png",
        SelectedImagePath = "AirQualitySensor/lightOn.png",
      };
      frameWhiteBack.AddChidren(btnLight);
        #endregion
      //设置LED灯
      btnSetLight = new NormalViewControl(175, 49, true);
      btnSetLight.Y = Application.GetRealHeight(1270 - 35);
      btnSetLight.TextID = R.MyInternationalizationString.SetAirQualitySensorLight;
      btnSetLight.TextSize = 12;
      btnSetLight.TextColor = ZigbeeColor.Current.XMGray3;
      btnSetLight.Enable = false;
      btnSetLight.TextAlignment = TextAlignment.Center;
      btnSetLight.Gravity = Gravity.CenterHorizontal;
      frameWhiteBack.AddChidren(btnSetLight);
      //线
      btnSetLightLine = new NormalViewControl(175, true);
      btnSetLightLine.Y = Application.GetRealHeight(1270 + 5);
      btnSetLightLine.Height = 2;
      btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMGray3;
      btnSetLightLine.Gravity = Gravity.CenterHorizontal;
      frameWhiteBack.AddChidren(btnSetLightLine);
      //查看历史记录
      btnHistoryText = new NormalViewControl(303, 49, true);
      btnHistoryText.Y = btnSetLightLine.Y + Application.GetRealHeight(50);
      btnHistoryText.TextID = R.MyInternationalizationString.CheckAirQualitySensorHistory;
      btnHistoryText.TextSize = 12;
      btnHistoryText.TextColor = ZigbeeColor.Current.XMOrange;
      btnHistoryText.TextAlignment = TextAlignment.Center;
      btnHistoryText.Gravity = Gravity.CenterHorizontal;
      frameWhiteBack.AddChidren(btnHistoryText);
      //线
      var btnHistoryTextLine = new NormalViewControl(209, true);
      btnHistoryTextLine.Height = 2;
      btnHistoryTextLine.Y = btnHistoryText.Y + Application.GetRealHeight(41);
      btnHistoryTextLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
      btnHistoryTextLine.Gravity = Gravity.CenterHorizontal;
      frameWhiteBack.AddChidren(btnHistoryTextLine);
      //设置初始状态
      if (((TemperatureSensor)this.device).OnOffStatus == 1)
      {
        btnLight.IsSelected = true;
        btnSetLight.TextColor = ZigbeeColor.Current.XMOrange;
        btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
        btnSetLight.Enable = true;
      }
      btnLight.MouseUpEventHandler += (sender, e) =>
      {
        //发送开关命令
        this.SetSwitchCommand(!btnLight.IsSelected);
      };
      btnSetLight.MouseUpEventHandler += (sender, e) =>
      {
        //设置灯事件
        //var AirQualitySensorLedBindTime = new Shared.Phone.UserCenter.DeviceBind.AirQualitySensorLedBindTime(aqSensor);
        //Shared.Phone.UserView.HomePage.Instance.AddChidren(AirQualitySensorLedBindTime);
        //Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
        //AirQualitySensorLedBindTime.Show();
      };
      btnHistoryText.MouseUpEventHandler += (sender, e) =>
      {
        //查看历史记录事件
      };
    }
    /// <summary>
    /// 空气质量传感器带有属性状态布局
    /// </summary>
    /// <param name="frameWhiteBack"></param>
    private void DeviceDataUI(FrameLayout frameWhiteBack)
    {
      //湿度容器
      var frameHumidityPic = new FrameLayout();
      frameHumidityPic.X = Application.GetRealWidth(121);
      frameHumidityPic.Y = Application.GetRealHeight(213);
      frameHumidityPic.Width = Application.GetMinRealAverage(311);
      frameHumidityPic.Height = Application.GetMinRealAverage(351);
      frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png";
      frameWhiteBack.AddChidren(frameHumidityPic);
      //湿度文本
      var btnHumidityText = new NormalViewControl(338, 49, true);
      btnHumidityText.Y = Application.GetRealHeight(45);
      btnHumidityText.TextID = R.MyInternationalizationString.Humidity;
      btnHumidityText.TextSize = 12;
      btnHumidityText.TextColor = ZigbeeColor.Current.XMWhite;
      btnHumidityText.TextAlignment = TextAlignment.Center;
      frameHumidityPic.AddChidren(btnHumidityText);
      //湿度文本容器
      var frameHumidityTextFrameLayout = new FrameLayout();
      frameHumidityTextFrameLayout.Gravity = Gravity.CenterHorizontal;
      frameHumidityTextFrameLayout.Y = Application.GetRealHeight(113);
      frameHumidityTextFrameLayout.Height = Application.GetRealHeight(160);
      frameHumidityPic.AddChidren(frameHumidityTextFrameLayout);
      //湿度数据
      var btnHumidityStatus = new NormalViewControl(193, 160, true);
      btnHumidityStatus.Text = "20";
      btnHumidityStatus.TextSize = 30;
      btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
      btnHumidityStatus.TextAlignment = TextAlignment.BottomRight;
      frameHumidityTextFrameLayout.AddChidren(btnHumidityStatus);
      //湿度单位
      var btnHumidityUnit = new NormalViewControl(50, 140, true);
      btnHumidityUnit.X = btnHumidityStatus.Right;
      btnHumidityUnit.Text = "%";
      btnHumidityUnit.TextSize = 14;
      btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
      btnHumidityUnit.TextAlignment = TextAlignment.BottomLeft;
      frameHumidityTextFrameLayout.AddChidren(btnHumidityUnit);
      //温度容器
      var frameTemperaturePic = new FrameLayout();
      frameTemperaturePic.X = Application.GetRealWidth(518);
      frameTemperaturePic.Y = frameHumidityPic.Y;
      frameTemperaturePic.Width = Application.GetMinRealAverage(321);
      frameTemperaturePic.BackgroundColor = 0xffff0000;
      frameTemperaturePic.Height = Application.GetMinRealAverage(351);
      frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png";
      frameWhiteBack.AddChidren(frameTemperaturePic);
      //温度文本
      var btnTemperatureText = new NormalViewControl(338, 49, true);
      btnTemperatureText.Y = Application.GetRealHeight(45);
      btnTemperatureText.TextID = R.MyInternationalizationString.Temperature;
      btnTemperatureText.TextSize = 12;
      btnTemperatureText.TextColor = ZigbeeColor.Current.XMWhite;
      btnTemperatureText.TextAlignment = TextAlignment.Center;
      frameTemperaturePic.AddChidren(btnTemperatureText);
      // 温度文本容器
      var frameTemperatureTextFrameLayout = new FrameLayout();
      frameTemperatureTextFrameLayout.Gravity = Gravity.CenterHorizontal;
      frameTemperatureTextFrameLayout.Y = Application.GetRealHeight(113);
      frameTemperatureTextFrameLayout.Height = Application.GetRealHeight(160);
      frameTemperaturePic.AddChidren(frameTemperatureTextFrameLayout);
      //温度数据
      var btnTemperatureStatus = new NormalViewControl(193, 160, true);
      btnTemperatureStatus.Text = "20";
      btnTemperatureStatus.TextSize = 30;
      btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
      btnTemperatureStatus.TextAlignment = TextAlignment.BottomRight;
      frameTemperatureTextFrameLayout.AddChidren(btnTemperatureStatus);
      //温度单位
      var btnTemperatureUnit = new NormalViewControl(50, 140, true);
      btnTemperatureUnit.X = btnTemperatureStatus.Right;
      btnTemperatureUnit.Text = "℃";
      btnTemperatureUnit.TextSize = 14;
      btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
      btnTemperatureUnit.TextAlignment = TextAlignment.BottomLeft;
      frameTemperatureTextFrameLayout.AddChidren(btnTemperatureUnit);
      //PM2.5容器
      var framePmPic = new FrameLayout();
      framePmPic.X = Application.GetRealWidth(120);
      framePmPic.Y = Application.GetRealHeight(634);
      framePmPic.Width = Application.GetMinRealAverage(311);
      framePmPic.Height = Application.GetMinRealAverage(351);
      framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png";
      frameWhiteBack.AddChidren(framePmPic);
      //PM2.5文本
      var btnPmText = new NormalViewControl(338, 49, true);
      btnPmText.Y = Application.GetRealHeight(45);
      btnPmText.Text = "PM2.5";
      btnPmText.TextSize = 12;
      btnPmText.TextColor = ZigbeeColor.Current.XMWhite;
      btnPmText.TextAlignment = TextAlignment.Center;
      framePmPic.AddChidren(btnPmText);
      // PM2.5文本容器
      var framePmTextFrameLayout = new FrameLayout();
      framePmTextFrameLayout.Y = Application.GetRealHeight(113);
      framePmTextFrameLayout.Gravity = Gravity.CenterHorizontal;
      framePmTextFrameLayout.Height = Application.GetRealHeight(160);
      framePmPic.AddChidren(framePmTextFrameLayout);
      //PM2.5数据
      var btnPmStatus = new NormalViewControl(162, 160, true);
      btnPmStatus.Text = "155";
      btnPmStatus.TextSize = 30;
      btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
      btnPmStatus.TextAlignment = TextAlignment.BottomRight;
      framePmTextFrameLayout.AddChidren(btnPmStatus);
      //PM2.5单位  (第4个,listControl【3】)
      var btnPmUnit = new NormalViewControl(144, 148, true);
      btnPmUnit.X = btnPmStatus.Right;
      btnPmUnit.Text = "μg/m³";
      btnPmUnit.TextSize = 14;
      btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
      btnPmUnit.TextAlignment = TextAlignment.BottomLeft;
      framePmTextFrameLayout.AddChidren(btnPmUnit);
      //Co2容器
      var frameCo2Pic = new FrameLayout();
      frameCo2Pic.X = Application.GetRealWidth(518);
      frameCo2Pic.Y = framePmPic.Y;
      frameCo2Pic.Width = Application.GetMinRealAverage(311);
      frameCo2Pic.Height = Application.GetMinRealAverage(351);
      frameCo2Pic.BackgroundImagePath = "AirQualitySensor/CO2Pic.png";
      frameWhiteBack.AddChidren(frameCo2Pic);
      //Co2文本
      var btnCo2Text = new NormalViewControl(338, 49, true);
      btnCo2Text.Y = Application.GetRealHeight(45);
      btnCo2Text.Text = "CO₂";
      btnCo2Text.TextSize = 12;
      btnCo2Text.TextColor = ZigbeeColor.Current.XMWhite;
      btnCo2Text.TextAlignment = TextAlignment.Center;
      frameCo2Pic.AddChidren(btnCo2Text);
      // Co2文本容器
      var frameCo2TextFrameLayout = new FrameLayout();
      frameCo2TextFrameLayout.Y = Application.GetRealHeight(113);
      frameCo2TextFrameLayout.Gravity = Gravity.CenterHorizontal;
      frameCo2TextFrameLayout.Height = Application.GetRealHeight(160);
      frameCo2Pic.AddChidren(frameCo2TextFrameLayout);
      //Co2数据
      var btnCo2Status = new NormalViewControl(162, 160, true);
      btnCo2Status.Text = "155";
      btnCo2Status.TextSize = 30;
      btnCo2Status.TextColor = ZigbeeColor.Current.XMWhite;
      btnCo2Status.TextAlignment = TextAlignment.BottomRight;
      frameCo2TextFrameLayout.AddChidren(btnCo2Status);
      //Co2单位  (第4个,listControl【4】)
      var btnCo2Unit = new NormalViewControl(112, 148, true);
      btnCo2Unit.X = btnPmStatus.Right;
      btnCo2Unit.Text = "ppm³";
      btnCo2Unit.TextSize = 14;
      btnCo2Unit.TextColor = ZigbeeColor.Current.XMWhite;
      btnCo2Unit.TextAlignment = TextAlignment.BottomLeft;
      frameCo2TextFrameLayout.AddChidren(btnCo2Unit);
      this.listControl.Add(btnHumidityStatus);//(第1个,listControl【0】)
      this.listControl.Add(btnTemperatureStatus);//(第2个,listControl【1】)
      this.listControl.Add(btnPmStatus);//(第3个,listControl【2】)
      this.listControl.Add(btnPmUnit);//(第4个,listControl【3】)
      this.listControl.Add(btnHumidityUnit);//(第5个,listControl【4】)
      this.listControl.Add(btnTemperatureUnit);//(第6个,listControl【5】)
      this.listControl.Add(btnCo2Status);//(第7个,listControl【6】)
      this.listControl.Add(btnCo2Unit);//(第8个,listControl【7】)
      this.listFrameLayout.Add(frameHumidityTextFrameLayout);//(第1个,listFrameLayout【0】)
      this.listFrameLayout.Add(frameTemperatureTextFrameLayout);//(第2个,listFrameLayout【1】)
      this.listFrameLayout.Add(framePmTextFrameLayout);//(第3个,listFrameLayout【2】)
      this.listFrameLayout.Add(frameCo2TextFrameLayout);//(第4个,listFrameLayout【3】)
    }
    #endregion
    #region ■ 发送开关命令_______________________
    /// <summary>
    /// 发送开关命令
    /// </summary>
    /// <param name="isOpen">发送状态</param>
    private void SetSwitchCommand(bool isOpen)
    {
      this.StartCheckResponeResult(listControl, (result) =>
      {
        //接收到网关回复
        if (result == true)
        #region ■ 初始化_____________________________
        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
        {
          HdlThreadLogic.Current.RunMain(() =>
          {
            bool statu = ((TemperatureSensor)this.device).OnOffStatus == 1;
            this.RefreshSwitchStatu(statu);
          });
        }
      });
      if (isOpen == true)
      {
        aqSensor.SwitchControl(1);
      }
      else
      {
        aqSensor.SwitchControl(0);
      }
    }
    #endregion
    #region ■ 刷新开关状态_______________________
    /// <summary>
    /// 刷新开关状态
    /// </summary>
    /// <param name="isOpen">打开状态</param>
    private void RefreshSwitchStatu(bool isOpen)
    {
      btnLight.IsSelected = isOpen;
      if (isOpen)
      {
        btnSetLight.TextColor = ZigbeeColor.Current.XMOrange;
        btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
        btnSetLight.Enable = true;
      }
      else
      {
        btnSetLight.TextColor = ZigbeeColor.Current.XMGray3;
        btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMGray3;
        btnSetLight.Enable = false;
      }
    }
    #endregion
    #region ■ 是否获取网关反馈的结果_____________
    /// <summary>
    /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
    /// </summary>
    /// <param name="comandDiv">命令区分</param>
    /// <param name="report">上报数据</param>
    /// <returns></returns>
    public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
    {
      if (comandDiv == ReceiveComandDiv.A设备属性上报)
      {
        if (report.DeviceStatusReport.CluterID == 6)
        {
          HdlThreadLogic.Current.RunMain(() =>
          {
            //变更卡片状态
            this.RefreshSwitchStatu(((TemperatureSensor)this.device).OnOffStatus == 1);
          });
          return true;
            //左滑不能
            this.ScrollEnabled = true;
            this.aqSensor = (TemperatureSensor)this.device;
            //每次进入这个界面,都读一下LED状态态。因为这个开关状态总是没收到,而其CO2,PM2.5,温湿度数据上报导致外面都检查状态标记为true
            aqSensor.SendSwitchStatuComand();
            //先清空
            this.listControl = new List<ButtonBase>();
            InitAirQualitySensorControl(frameWhiteBack);
            UpdateStatus();
        }
        if (report.DeviceStatusReport.CluterID == 1026)
        /// <summary>
        /// 初始化空气质量传感器控件
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void InitAirQualitySensorControl(FrameLayout frameWhiteBack)
        {
          var attriButeList = report.DeviceStatusReport.AttriBute;
          foreach (var attList in attriButeList)
          {
            if (attList.AttributeId == 0)
            DeviceDataUI(frameWhiteBack);
            //灯
            btnLight = new Button()
            {
              HdlThreadLogic.Current.RunMain(() =>
              {
                UpdateStatus();
              });
                Width = Application.GetMinRealAverage(144),
                Height = Application.GetMinRealAverage(144),
                Y = Application.GetRealHeight(1031 - 5),
                Gravity = Gravity.CenterHorizontal,
                UnSelectedImagePath = "AirQualitySensor/light.png",
                SelectedImagePath = "AirQualitySensor/lightOn.png",
            };
            frameWhiteBack.AddChidren(btnLight);
              //已经接收到网关的反馈
              return true;
            }
          }
        }
        if (report.DeviceStatusReport.CluterID == 1029)
        {
          var attriButeList = report.DeviceStatusReport.AttriBute;
          foreach (var attList in attriButeList)
          {
            if (attList.AttributeId == 0)
            //设置LED灯
            btnSetLight = new NormalViewControl(175+94, 49, true);
            btnSetLight.Y = Application.GetRealHeight(1270 - 35);
            btnSetLight.TextID = R.MyInternationalizationString.SetAirQualitySensorLight;
            btnSetLight.TextSize = 12;
            btnSetLight.TextColor = ZigbeeColor.Current.XMGray3;
            btnSetLight.Enable = false;
            btnSetLight.TextAlignment = TextAlignment.Center;
            btnSetLight.Gravity = Gravity.CenterHorizontal;
            frameWhiteBack.AddChidren(btnSetLight);
            //线
            btnSetLightLine = new NormalViewControl(175, true);
            btnSetLightLine.Y = Application.GetRealHeight(1270 + 5);
            btnSetLightLine.Height = 2;
            btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMGray3;
            btnSetLightLine.Gravity = Gravity.CenterHorizontal;
            frameWhiteBack.AddChidren(btnSetLightLine);
            //查看历史记录
            btnHistoryText = new NormalViewControl(303, 49, true);
            btnHistoryText.Y = btnSetLightLine.Y + Application.GetRealHeight(50);
            btnHistoryText.TextID = R.MyInternationalizationString.CheckAirQualitySensorHistory;
            btnHistoryText.TextSize = 12;
            btnHistoryText.TextColor = ZigbeeColor.Current.XMOrange;
            btnHistoryText.TextAlignment = TextAlignment.Center;
            btnHistoryText.Gravity = Gravity.CenterHorizontal;
            frameWhiteBack.AddChidren(btnHistoryText);
            //线
            var btnHistoryTextLine = new NormalViewControl(209, true);
            btnHistoryTextLine.Height = 2;
            btnHistoryTextLine.Y = btnHistoryText.Y + Application.GetRealHeight(41);
            btnHistoryTextLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
            btnHistoryTextLine.Gravity = Gravity.CenterHorizontal;
            frameWhiteBack.AddChidren(btnHistoryTextLine);
            //设置初始状态
            if (((TemperatureSensor)this.device).OnOffStatus == 1)
            {
              HdlThreadLogic.Current.RunMain(() =>
              {
                UpdateStatus();
              });
              //已经接收到网关的反馈
              return true;
                btnLight.IsSelected = true;
                btnSetLight.TextColor = ZigbeeColor.Current.XMOrange;
                btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
                btnSetLight.Enable = true;
            }
          }
        }
        if (report.DeviceStatusReport.CluterID == 1037)
        {
          var attriButeList = report.DeviceStatusReport.AttriBute;
          foreach (var attList in attriButeList)
          {
            if (attList.AttributeId == 0)
            btnLight.MouseUpEventHandler += (sender, e) =>
            {
              HdlThreadLogic.Current.RunMain(() =>
              {
                UpdateStatus();
              });
              //已经接收到网关的反馈
              return true;
            }
          }
        }
        if (report.DeviceStatusReport.CluterID == 1066)
        {
          var attriButeList = report.DeviceStatusReport.AttriBute;
          foreach (var attList in attriButeList)
          {
            if (attList.AttributeId == 0)
                //发送开关命令
                this.SetSwitchCommand(!btnLight.IsSelected);
            };
            btnSetLight.MouseUpEventHandler += (sender, e) =>
            {
              HdlThreadLogic.Current.RunMain(() =>
              {
                UpdateStatus();
              });
              //已经接收到网关的反馈
              return true;
            }
          }
                //设置灯事件
                var AirQualitySensorLedBindTime = new Shared.Phone.UserCenter.DeviceBind.AirQualitySensorLedBindTime(aqSensor);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(AirQualitySensorLedBindTime);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                AirQualitySensorLedBindTime.Show();
            };
            btnHistoryText.MouseUpEventHandler += (sender, e) =>
            {
                //查看历史记录事件
                var form = new DeviceTemperatureHistoryForm();
                form.AddForm(this.device);
            };
        }
      }
      return false;
        /// <summary>
        /// 空气质量传感器带有属性状态布局
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void DeviceDataUI(FrameLayout frameWhiteBack)
        {
            //湿度容器
            var frameHumidityPic = new FrameLayout();
            frameHumidityPic.X = Application.GetRealWidth(121);
            frameHumidityPic.Y = Application.GetRealHeight(213);
            frameHumidityPic.Width = Application.GetMinRealAverage(311);
            frameHumidityPic.Height = Application.GetMinRealAverage(351);
            frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png";
            frameWhiteBack.AddChidren(frameHumidityPic);
            //湿度文本
            var btnHumidityText = new NormalViewControl(338, 49, true);
            btnHumidityText.Y = Application.GetRealHeight(45);
            btnHumidityText.TextID = R.MyInternationalizationString.Humidity;
            btnHumidityText.TextSize = 12;
            btnHumidityText.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityText.TextAlignment = TextAlignment.Center;
            frameHumidityPic.AddChidren(btnHumidityText);
            //湿度文本容器
            var frameHumidityTextFrameLayout = new FrameLayout();
            frameHumidityTextFrameLayout.Gravity = Gravity.CenterHorizontal;
            frameHumidityTextFrameLayout.Y = Application.GetRealHeight(113);
            frameHumidityTextFrameLayout.Height = Application.GetRealHeight(160);
            frameHumidityPic.AddChidren(frameHumidityTextFrameLayout);
            //湿度数据
            var btnHumidityStatus = new NormalViewControl(193, 160, true);
            btnHumidityStatus.Text = "20";
            btnHumidityStatus.TextSize = 30;
            btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityStatus.TextAlignment = TextAlignment.BottomRight;
            frameHumidityTextFrameLayout.AddChidren(btnHumidityStatus);
            //湿度单位
            var btnHumidityUnit = new NormalViewControl(50, 140, true);
            btnHumidityUnit.X = btnHumidityStatus.Right;
            btnHumidityUnit.Text = "%";
            btnHumidityUnit.TextSize = 14;
            btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityUnit.TextAlignment = TextAlignment.BottomLeft;
            frameHumidityTextFrameLayout.AddChidren(btnHumidityUnit);
            //温度容器
            var frameTemperaturePic = new FrameLayout();
            frameTemperaturePic.X = Application.GetRealWidth(518);
            frameTemperaturePic.Y = frameHumidityPic.Y;
            frameTemperaturePic.Width = Application.GetMinRealAverage(321);
            frameTemperaturePic.Height = Application.GetMinRealAverage(351);
            frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png";
            frameWhiteBack.AddChidren(frameTemperaturePic);
            //温度文本
            var btnTemperatureText = new NormalViewControl(338, 49, true);
            btnTemperatureText.Y = Application.GetRealHeight(45);
            btnTemperatureText.TextID = R.MyInternationalizationString.Temperature;
            btnTemperatureText.TextSize = 12;
            btnTemperatureText.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureText.TextAlignment = TextAlignment.Center;
            frameTemperaturePic.AddChidren(btnTemperatureText);
            // 温度文本容器
            var frameTemperatureTextFrameLayout = new FrameLayout();
            frameTemperatureTextFrameLayout.Gravity = Gravity.CenterHorizontal;
            frameTemperatureTextFrameLayout.Y = Application.GetRealHeight(113);
            frameTemperatureTextFrameLayout.Height = Application.GetRealHeight(160);
            frameTemperaturePic.AddChidren(frameTemperatureTextFrameLayout);
            //温度数据
            var btnTemperatureStatus = new NormalViewControl(193, 160, true);
            btnTemperatureStatus.Text = "20";
            btnTemperatureStatus.TextSize = 30;
            btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureStatus.TextAlignment = TextAlignment.BottomRight;
            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureStatus);
            //温度单位
            var btnTemperatureUnit = new NormalViewControl(50, 140, true);
            btnTemperatureUnit.X = btnTemperatureStatus.Right;
            btnTemperatureUnit.Text = "℃";
            btnTemperatureUnit.TextSize = 14;
            btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureUnit.TextAlignment = TextAlignment.BottomLeft;
            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureUnit);
            //PM2.5容器
            var framePmPic = new FrameLayout();
            framePmPic.X = Application.GetRealWidth(120);
            framePmPic.Y = Application.GetRealHeight(634);
            framePmPic.Width = Application.GetMinRealAverage(311);
            framePmPic.Height = Application.GetMinRealAverage(351);
            framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png";
            frameWhiteBack.AddChidren(framePmPic);
            //PM2.5文本
            var btnPmText = new NormalViewControl(338, 49, true);
            btnPmText.Y = Application.GetRealHeight(45);
            btnPmText.Text = "PM2.5";
            btnPmText.TextSize = 12;
            btnPmText.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmText.TextAlignment = TextAlignment.Center;
            framePmPic.AddChidren(btnPmText);
            // PM2.5文本容器
            var framePmTextFrameLayout = new FrameLayout();
            framePmTextFrameLayout.Y = Application.GetRealHeight(113);
            framePmTextFrameLayout.Gravity = Gravity.CenterHorizontal;
            framePmTextFrameLayout.Height = Application.GetRealHeight(160);
            framePmPic.AddChidren(framePmTextFrameLayout);
            //PM2.5数据
            var btnPmStatus = new NormalViewControl(162, 160, true);
            btnPmStatus.Text = "155";
            btnPmStatus.TextSize = 30;
            btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmStatus.TextAlignment = TextAlignment.BottomRight;
            framePmTextFrameLayout.AddChidren(btnPmStatus);
            //PM2.5单位  (第4个,listControl【3】)
            var btnPmUnit = new NormalViewControl(144, 148, true);
            btnPmUnit.X = btnPmStatus.Right;
            btnPmUnit.Text = "μg/m³";
            btnPmUnit.TextSize = 14;
            btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmUnit.TextAlignment = TextAlignment.BottomLeft;
            framePmTextFrameLayout.AddChidren(btnPmUnit);
            //产品部要求,暂时去掉Co2
            //Co2容器
            /* var frameCo2Pic = new FrameLayout();
             frameCo2Pic.X = Application.GetRealWidth(518);
             frameCo2Pic.Y = framePmPic.Y;
             frameCo2Pic.Width = Application.GetMinRealAverage(311);
             frameCo2Pic.Height = Application.GetMinRealAverage(351);
             frameCo2Pic.BackgroundImagePath = "AirQualitySensor/CO2Pic.png";
             frameWhiteBack.AddChidren(frameCo2Pic);*/
            //Co2文本
            /*var btnCo2Text = new NormalViewControl(338, 49, true);
            btnCo2Text.Y = Application.GetRealHeight(45);
            btnCo2Text.Text = "CO₂";
            btnCo2Text.TextSize = 12;
            btnCo2Text.TextColor = ZigbeeColor.Current.XMWhite;
            btnCo2Text.TextAlignment = TextAlignment.Center;
            frameCo2Pic.AddChidren(btnCo2Text);*/
            // Co2文本容器
            /* var frameCo2TextFrameLayout = new FrameLayout();
             frameCo2TextFrameLayout.Y = Application.GetRealHeight(113);
             frameCo2TextFrameLayout.Gravity = Gravity.CenterHorizontal;
             frameCo2TextFrameLayout.Height = Application.GetRealHeight(160);
             frameCo2Pic.AddChidren(frameCo2TextFrameLayout);*/
            //Co2数据
            /*var btnCo2Status = new NormalViewControl(162, 160, true);
            btnCo2Status.Text = "155";
            btnCo2Status.TextSize = 30;
            btnCo2Status.TextColor = ZigbeeColor.Current.XMWhite;
            btnCo2Status.TextAlignment = TextAlignment.BottomRight;
            frameCo2TextFrameLayout.AddChidren(btnCo2Status);*/
            //Co2单位  (第4个,listControl【4】)
            /*var btnCo2Unit = new NormalViewControl(112, 148, true);
            btnCo2Unit.X = btnPmStatus.Right;
            btnCo2Unit.Text = "ppm³";
            btnCo2Unit.TextSize = 14;
            btnCo2Unit.TextColor = ZigbeeColor.Current.XMWhite;
            btnCo2Unit.TextAlignment = TextAlignment.BottomLeft;
            frameCo2TextFrameLayout.AddChidren(btnCo2Unit);*/
            this.listControl.Add(btnHumidityStatus);//(第1个,listControl【0】)
            this.listControl.Add(btnTemperatureStatus);//(第2个,listControl【1】)
            this.listControl.Add(btnPmStatus);//(第3个,listControl【2】)
            this.listControl.Add(btnPmUnit);//(第4个,listControl【3】)
            this.listControl.Add(btnHumidityUnit);//(第5个,listControl【4】)
            this.listControl.Add(btnTemperatureUnit);//(第6个,listControl【5】)
            //this.listControl.Add(btnCo2Status);//(第7个,listControl【6】)
            //this.listControl.Add(btnCo2Unit);//(第8个,listControl【7】)
            this.listFrameLayout.Add(frameHumidityTextFrameLayout);//(第1个,listFrameLayout【0】)
            this.listFrameLayout.Add(frameTemperatureTextFrameLayout);//(第2个,listFrameLayout【1】)
            this.listFrameLayout.Add(framePmTextFrameLayout);//(第3个,listFrameLayout【2】)
            //this.listFrameLayout.Add(frameCo2TextFrameLayout);//(第4个,listFrameLayout【3】)
        }
        #endregion
        #region ■ 发送开关命令_______________________
        /// <summary>
        /// 发送开关命令
        /// </summary>
        /// <param name="isOpen">发送状态</param>
        private void SetSwitchCommand(bool isOpen)
        {
            this.StartCheckResponeResult(listControl, (result) =>
            {
                //接收到网关回复
                if (result == true)
                {
                    HdlThreadLogic.Current.RunMain(() =>
              {
                  bool statu = ((TemperatureSensor)this.device).OnOffStatus == 1;
                  this.RefreshSwitchStatu(statu);
              });
                }
            });
            if (isOpen == true)
            {
                aqSensor.SwitchControl(1);
            }
            else
            {
                aqSensor.SwitchControl(0);
            }
        }
        #endregion
        #region ■ 刷新开关状态_______________________
        /// <summary>
        /// 刷新开关状态
        /// </summary>
        /// <param name="isOpen">打开状态</param>
        private void RefreshSwitchStatu(bool isOpen)
        {
            btnLight.IsSelected = isOpen;
            if (isOpen)
            {
                btnSetLight.TextColor = ZigbeeColor.Current.XMOrange;
                btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
                btnSetLight.Enable = true;
            }
            else
            {
                btnSetLight.TextColor = ZigbeeColor.Current.XMGray3;
                btnSetLightLine.BackgroundColor = ZigbeeColor.Current.XMGray3;
                btnSetLight.Enable = false;
            }
        }
        #endregion
        #region ■ 是否获取网关反馈的结果_____________
        /// <summary>
        /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
        /// </summary>
        /// <param name="comandDiv">命令区分</param>
        /// <param name="report">上报数据</param>
        /// <returns></returns>
        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
        {
            if (comandDiv == ReceiveComandDiv.A设备属性上报)
            {
                if (report.DeviceStatusReport.CluterID == 6)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //变更卡片状态
                        this.RefreshSwitchStatu(((TemperatureSensor)this.device).OnOffStatus == 1);
                    });
                    return true;
                }
                if (report.DeviceStatusReport.CluterID == 1026)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1029)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1037)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
                if (report.DeviceStatusReport.CluterID == 1066)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        #endregion
        #region ■ 刷新状态_____________
        /// <summary>
        /// 刷新状态
        /// </summary>
        private void UpdateStatus()
        {
            //设置状态文字
            this.listControl[0].Text = aqSensor.currentHumidity.ToString();
            this.listControl[1].Text = aqSensor.currentTemperature.ToString();
            this.listControl[2].Text = aqSensor.currentPmData.ToString();
            //this.listControl[6].Text = aqSensor.currentCO2.ToString();
            //设置状态文字
            var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType();
            this.SetStatuText(curText);
            this.listControl[0].Width = this.listControl[0].GetRealWidthByText();
            this.listControl[4].X = this.listControl[0].Right;
            this.listControl[1].Width = this.listControl[1].GetRealWidthByText();
            this.listControl[5].X = this.listControl[1].Right;
            this.listControl[2].Width = this.listControl[2].GetRealWidthByText();
            this.listControl[3].X = this.listControl[2].Right;
            this.listControl[3].Width = this.listControl[3].GetRealWidthByText();
            //this.listControl[6].Width = this.listControl[6].GetRealWidthByText();
            //this.listControl[7].X = this.listControl[6].Right;
            this.listFrameLayout[0].Width = this.listControl[0].Width + this.listControl[4].Width;
            this.listFrameLayout[1].Width = this.listControl[1].Width + this.listControl[5].Width;
            this.listFrameLayout[2].Width = this.listControl[2].Width + this.listControl[3].Width;
            //this.listFrameLayout[3].Width = this.listControl[6].Width + this.listControl[7].Width;
            this.listFrameLayout[0].Gravity = Gravity.CenterHorizontal;
            this.listFrameLayout[1].Gravity = Gravity.CenterHorizontal;
            this.listFrameLayout[2].Gravity = Gravity.CenterHorizontal;
            //this.listFrameLayout[3].Gravity = Gravity.CenterHorizontal;
        }
        /// <summary>
        /// 质量等级
        /// </summary>
        private string QuailityType()
        {
            var tempAirQuality = aqSensor.AirQuality(aqSensor);
            string curQuality = string.Empty;
            if (tempAirQuality == 1)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
            }
            else if (tempAirQuality == 2)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
            }
            else if (tempAirQuality == 3)
            {
                curQuality = Language.StringByID(R.MyInternationalizationString.Pollution);
            }
            else
            {
                curQuality = "";
            }
            //设置状态文字
            return curQuality;
        }
        #endregion
    }
    #endregion
    #region ■ 刷新状态_____________
    /// <summary>
    /// 刷新状态
    /// </summary>
    private void UpdateStatus()
    {
      //设置状态文字
      this.listControl[0].Text = aqSensor.currentHumidity.ToString();
      this.listControl[1].Text = aqSensor.currentTemperature.ToString();
      this.listControl[2].Text = aqSensor.currentPmData.ToString();
      this.listControl[6].Text = aqSensor.currentCO2.ToString();
      //设置状态文字
      var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType();
      this.SetStatuText(curText);
      this.listControl[0].Width = this.listControl[0].GetRealWidthByText();
      this.listControl[4].X = this.listControl[0].Right;
      this.listControl[1].Width = this.listControl[1].GetRealWidthByText();
      this.listControl[5].X = this.listControl[1].Right;
      this.listControl[2].Width = this.listControl[2].GetRealWidthByText();
      this.listControl[3].X = this.listControl[2].Right;
      this.listControl[3].Width = this.listControl[3].GetRealWidthByText();
      this.listControl[6].Width = this.listControl[6].GetRealWidthByText();
      this.listControl[7].X = this.listControl[6].Right;
      this.listFrameLayout[0].Width = this.listControl[0].Width + this.listControl[4].Width;
      this.listFrameLayout[1].Width = this.listControl[1].Width + this.listControl[5].Width;
      this.listFrameLayout[2].Width = this.listControl[2].Width + this.listControl[3].Width;
      this.listFrameLayout[3].Width = this.listControl[6].Width + this.listControl[7].Width;
      this.listFrameLayout[0].Gravity = Gravity.CenterHorizontal;
      this.listFrameLayout[1].Gravity = Gravity.CenterHorizontal;
      this.listFrameLayout[2].Gravity = Gravity.CenterHorizontal;
      this.listFrameLayout[3].Gravity = Gravity.CenterHorizontal;
    }
    /// <summary>
    /// 质量等级
    /// </summary>
    private string QuailityType()
    {
      var tempAirQuality = aqSensor.AirQuality(aqSensor);
      string curQuality = string.Empty;
      if (tempAirQuality == 1)
      {
        curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
      }
      else if (tempAirQuality == 2)
      {
        curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
      }
      else if (tempAirQuality == 3)
      {
        curQuality = Language.StringByID(R.MyInternationalizationString.Pollution);
      }
      else
      {
        curQuality = "";
      }
      //设置状态文字
      return curQuality;
    }
    #endregion
  }
}