From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs | 1504 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 752 insertions(+), 752 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs
index 4bd6c18..fcfdd7e 100644
--- a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs
@@ -6,174 +6,174 @@
 using ZigBee.Device;
 namespace Shared.Phone.MainPage.ControlForm
 {
-  /// <summary>
-  /// 鏅捐。鏋剁被鍨嬬殑娣卞害鍗$墖鐣岄潰
-  /// </summary>
-  public class DeviceAirerDetailCardForm : DeviceDetailCardCommonForm
-  {
-    #region 鈻� 鍙橀噺澹版槑___________________________
     /// <summary>
-    /// 褰撳墠鏅捐。鏋�
+    /// 鏅捐。鏋剁被鍨嬬殑娣卞害鍗$墖鐣岄潰
     /// </summary>
-    Airer airer = null;
-    /// <summary>
-    /// 鎵撳紑鎺т欢
-    /// </summary>
-    private IconBigViewControl btnOpen = null;
-    /// <summary>
-    /// 鍋滄鎺т欢
-    /// </summary>
-    private IconBigViewControl btnStop = null;
-    /// <summary>
-    /// 鍏抽棴鎺т欢
-    /// </summary>
-    private IconBigViewControl btnClose = null;
-    /// <summary>
-    /// 鐓ф槑
-    /// </summary>
-    private IconViewControl btnLight = null;
-    /// <summary>
-    /// 娑堟瘨
-    /// </summary>
-    private IconViewControl btnDisinfect = null;
-    /// <summary>
-    /// 椋庡共
-    /// </summary>
-    private IconViewControl btnWind = null;
-    /// <summary>
-    /// 鐑樺共
-    /// </summary>
-    private IconViewControl btnDry = null;
-
-    /// <summary>
-    /// 寮�鍚堝笜鎺т欢
-    /// </summary>
-    private CurtainSeekBar SeekBarOpenCurtain = null;
-    /// <summary>
-    /// 杩涘害鍊兼槸鍚﹀湪鏀瑰彉涓�
-    /// </summary>
-    private bool isProgressing = false;
-    /// <summary>
-    /// 鏄惁宸茬粡鍒濆鍖栦簡鎺т欢(鍥犱负搴曞眰鏈夊彲鑳戒細鍒锋柊鏁翠釜鐣岄潰)
-    /// </summary>
-    private bool hadInitControl = false;
-    /// <summary>
-    /// 鐑樺共鏃堕棿
-    /// </summary>
-    Button btnDryTimeText;
-    /// <summary>
-    /// 椋庡共鏃堕棿 
-    /// </summary>
-    Button btnWindTimeText;
-    /// <summary>
-    /// 娑堟瘨鏃堕棿
-    /// </summary>
-    Button btnDisinfectTimeText;
-    /// <summary>
-    /// 鐑樺共鏂囨湰鏃堕棿澶勭悊
-    /// </summary>
-    public Action<string> actionDry = null;
-    /// <summary>
-    /// 椋庡共鏂囨湰鏃堕棿澶勭悊
-    /// </summary>
-    public Action<string> actionWind = null;
-    /// <summary>
-    /// 娑堟瘨鏂囨湰鏃堕棿澶勭悊
-    /// </summary>
-    public Action<string> actionDisinfect = null;
-    #endregion
-
-    #region 鈻� 鍒濆鍖朹____________________________
-
-    /// <summary>
-    /// 搴曞眰鍒濆鍖栦腑閮ㄦ帶浠跺畬鎴愪箣鍚�
-    /// </summary>
-    /// <param name="frameWhiteBack"></param>
-    public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
+    public class DeviceAirerDetailCardForm : DeviceDetailCardCommonForm
     {
-      airer = this.device as Airer;
-      //宸︽粦涓嶈兘
-      this.ScrollEnabled = false;
-      //璁剧疆鐘舵�佹枃瀛�
-      this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 褰撳墠鏅捐。鏋�
+        /// </summary>
+        Airer airer = null;
+        /// <summary>
+        /// 鎵撳紑鎺т欢
+        /// </summary>
+        private IconBigViewControl btnOpen = null;
+        /// <summary>
+        /// 鍋滄鎺т欢
+        /// </summary>
+        private IconBigViewControl btnStop = null;
+        /// <summary>
+        /// 鍏抽棴鎺т欢
+        /// </summary>
+        private IconBigViewControl btnClose = null;
+        /// <summary>
+        /// 鐓ф槑
+        /// </summary>
+        private IconViewControl btnLight = null;
+        /// <summary>
+        /// 娑堟瘨
+        /// </summary>
+        private IconViewControl btnDisinfect = null;
+        /// <summary>
+        /// 椋庡共
+        /// </summary>
+        private IconViewControl btnWind = null;
+        /// <summary>
+        /// 鐑樺共
+        /// </summary>
+        private IconViewControl btnDry = null;
 
-      var btnDoorLockPic = new Button()
-      {
-        Width = Application.GetMinReal(432),
-        Height = Application.GetMinReal(302),
-        Y = Application.GetRealHeight(228),
-        UnSelectedImagePath = "Airer/DetailAirerPic.png",
-        Gravity = Gravity.CenterHorizontal,
-      };
-      frameWhiteBack.AddChidren(btnDoorLockPic);
+        /// <summary>
+        /// 寮�鍚堝笜鎺т欢
+        /// </summary>
+        private CurtainSeekBar SeekBarOpenCurtain = null;
+        /// <summary>
+        /// 杩涘害鍊兼槸鍚﹀湪鏀瑰彉涓�
+        /// </summary>
+        private bool isProgressing = false;
+        /// <summary>
+        /// 鏄惁宸茬粡鍒濆鍖栦簡鎺т欢(鍥犱负搴曞眰鏈夊彲鑳戒細鍒锋柊鏁翠釜鐣岄潰)
+        /// </summary>
+        private bool hadInitControl = false;
+        /// <summary>
+        /// 鐑樺共鏃堕棿
+        /// </summary>
+        Button btnDryTimeText;
+        /// <summary>
+        /// 椋庡共鏃堕棿 
+        /// </summary>
+        Button btnWindTimeText;
+        /// <summary>
+        /// 娑堟瘨鏃堕棿
+        /// </summary>
+        Button btnDisinfectTimeText;
+        /// <summary>
+        /// 鐑樺共鏂囨湰鏃堕棿澶勭悊
+        /// </summary>
+        public Action<string> actionDry = null;
+        /// <summary>
+        /// 椋庡共鏂囨湰鏃堕棿澶勭悊
+        /// </summary>
+        public Action<string> actionWind = null;
+        /// <summary>
+        /// 娑堟瘨鏂囨湰鏃堕棿澶勭悊
+        /// </summary>
+        public Action<string> actionDisinfect = null;
+        #endregion
 
-      //鎵撳紑鎺т欢
-      this.btnOpen = new IconBigViewControl(81, 81);
-      btnOpen.btnIcon.UseClickStatu = true;
-      frameWhiteBack.AddChidren(btnOpen);
-      btnOpen.InitControl();
-      btnOpen.UnSelectedImagePath = "Airer/UpOffline.png";
-      btnOpen.SelectedImagePath = "Airer/Up.png";
-      btnOpen.X = Application.GetRealWidth(132) - btnOpen.XOffset;
-      btnOpen.Y = Application.GetRealHeight(671);
+        #region 鈻� 鍒濆鍖朹____________________________
 
-      //鍋滄鎺т欢
-      this.btnStop = new IconBigViewControl(81, 81);
-      btnStop.btnIcon.UseClickStatu = true;
-      btnStop.UnSelectedImagePath = "Airer/StopOffline.png";
-      btnStop.SelectedImagePath = "Airer/Stop.png";
-      frameWhiteBack.AddChidren(btnStop);
-      btnStop.InitControl();
-      btnStop.X = Application.GetRealWidth(444) - btnStop.XOffset;
-      btnStop.Y = btnOpen.Y;
+        /// <summary>
+        /// 搴曞眰鍒濆鍖栦腑閮ㄦ帶浠跺畬鎴愪箣鍚�
+        /// </summary>
+        /// <param name="frameWhiteBack"></param>
+        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
+        {
+            airer = this.device as Airer;
+            //宸︽粦涓嶈兘
+            this.ScrollEnabled = false;
+            //璁剧疆鐘舵�佹枃瀛�
+            this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
 
-      //鍏抽棴
-      this.btnClose = new IconBigViewControl(81, 81);
-      btnClose.btnIcon.UseClickStatu = true;
-      frameWhiteBack.AddChidren(btnClose);
-      btnClose.InitControl();
-      btnClose.UnSelectedImagePath = "Airer/DownOffline.png";
-      btnClose.SelectedImagePath = "Airer/Down.png";
-      btnClose.X = Application.GetRealWidth(752) - btnClose.XOffset;
-      btnClose.Y = btnOpen.Y;
+            var btnDoorLockPic = new Button()
+            {
+                Width = Application.GetMinReal(432),
+                Height = Application.GetMinReal(302),
+                Y = Application.GetRealHeight(228),
+                UnSelectedImagePath = "Airer/DetailAirerPic.png",
+                Gravity = Gravity.CenterHorizontal,
+            };
+            frameWhiteBack.AddChidren(btnDoorLockPic);
 
-      //鐑樺共
-      btnDry = new IconViewControl(81);
-      btnDry.UnSelectedImagePath = "Airer/DryOffline.png";
-      btnDry.SelectedImagePath = "Airer/Dry.png";
-      btnDry.X = Application.GetRealWidth(98);
-      btnDry.Y = Application.GetRealHeight(913);
-      btnDry.IsSelected = ((Airer)this.device).DryOnOffStatus == 1 ? true : false;
-      frameWhiteBack.AddChidren(btnDry);
+            //鎵撳紑鎺т欢
+            this.btnOpen = new IconBigViewControl(81, 81);
+            btnOpen.btnIcon.UseClickStatu = true;
+            frameWhiteBack.AddChidren(btnOpen);
+            btnOpen.InitControl();
+            btnOpen.UnSelectedImagePath = "Airer/UpOffline.png";
+            btnOpen.SelectedImagePath = "Airer/Up.png";
+            btnOpen.X = Application.GetRealWidth(132) - btnOpen.XOffset;
+            btnOpen.Y = Application.GetRealHeight(671);
 
-      //椋庡共
-      btnWind = new IconViewControl(81);
-      frameWhiteBack.AddChidren(btnWind);
-      btnWind.UnSelectedImagePath = "Airer/WindOffline.png";
-      btnWind.SelectedImagePath = "Airer/Wind.png";
-      btnWind.X = Application.GetRealWidth(328);
-      btnWind.IsSelected = ((Airer)this.device).WindOnOffStatus == 1 ? true : false;
-      btnWind.Y = btnDry.Y;
+            //鍋滄鎺т欢
+            this.btnStop = new IconBigViewControl(81, 81);
+            btnStop.btnIcon.UseClickStatu = true;
+            btnStop.UnSelectedImagePath = "Airer/StopOffline.png";
+            btnStop.SelectedImagePath = "Airer/Stop.png";
+            frameWhiteBack.AddChidren(btnStop);
+            btnStop.InitControl();
+            btnStop.X = Application.GetRealWidth(444) - btnStop.XOffset;
+            btnStop.Y = btnOpen.Y;
 
-      //娑堟瘨
-      btnDisinfect = new IconViewControl(81);
-      frameWhiteBack.AddChidren(btnDisinfect);
-      btnDisinfect.UnSelectedImagePath = "Airer/DisinfectOffline.png";
-      btnDisinfect.SelectedImagePath = "Airer/DisinfectSelected.png";
-      btnDisinfect.IsSelected = ((Airer)this.device).DisinfectOnOffStatus == 1 ? true : false;
-      btnDisinfect.X = Application.GetRealWidth(556);
-      btnDisinfect.Y = btnDry.Y;
+            //鍏抽棴
+            this.btnClose = new IconBigViewControl(81, 81);
+            btnClose.btnIcon.UseClickStatu = true;
+            frameWhiteBack.AddChidren(btnClose);
+            btnClose.InitControl();
+            btnClose.UnSelectedImagePath = "Airer/DownOffline.png";
+            btnClose.SelectedImagePath = "Airer/Down.png";
+            btnClose.X = Application.GetRealWidth(752) - btnClose.XOffset;
+            btnClose.Y = btnOpen.Y;
 
-      //鐓ф槑
-      btnLight = new IconViewControl(81);
-      frameWhiteBack.AddChidren(btnLight);
-      btnLight.UnSelectedImagePath = "Airer/LightOffline.png";
-      btnLight.SelectedImagePath = "Airer/LightSelected.png";
-      btnLight.IsSelected = ((Airer)this.device).OnOffStatus == 1 ? true : false;
-      btnLight.X = Application.GetRealWidth(786);
-      btnLight.Y = btnDry.Y;
+            //鐑樺共
+            btnDry = new IconViewControl(81);
+            btnDry.UnSelectedImagePath = "Airer/DryOffline.png";
+            btnDry.SelectedImagePath = "Airer/Dry.png";
+            btnDry.X = Application.GetRealWidth(98);
+            btnDry.Y = Application.GetRealHeight(913);
+            btnDry.IsSelected = ((Airer)this.device).DryOnOffStatus == 1 ? true : false;
+            frameWhiteBack.AddChidren(btnDry);
 
-      string[] stringText = {
+            //椋庡共
+            btnWind = new IconViewControl(81);
+            frameWhiteBack.AddChidren(btnWind);
+            btnWind.UnSelectedImagePath = "Airer/WindOffline.png";
+            btnWind.SelectedImagePath = "Airer/Wind.png";
+            btnWind.X = Application.GetRealWidth(328);
+            btnWind.IsSelected = ((Airer)this.device).WindOnOffStatus == 1 ? true : false;
+            btnWind.Y = btnDry.Y;
+
+            //娑堟瘨
+            btnDisinfect = new IconViewControl(81);
+            frameWhiteBack.AddChidren(btnDisinfect);
+            btnDisinfect.UnSelectedImagePath = "Airer/DisinfectOffline.png";
+            btnDisinfect.SelectedImagePath = "Airer/DisinfectSelected.png";
+            btnDisinfect.IsSelected = ((Airer)this.device).DisinfectOnOffStatus == 1 ? true : false;
+            btnDisinfect.X = Application.GetRealWidth(556);
+            btnDisinfect.Y = btnDry.Y;
+
+            //鐓ф槑
+            btnLight = new IconViewControl(81);
+            frameWhiteBack.AddChidren(btnLight);
+            btnLight.UnSelectedImagePath = "Airer/LightOffline.png";
+            btnLight.SelectedImagePath = "Airer/LightSelected.png";
+            btnLight.IsSelected = ((Airer)this.device).OnOffStatus == 1 ? true : false;
+            btnLight.X = Application.GetRealWidth(786);
+            btnLight.Y = btnDry.Y;
+
+            string[] stringText = {
                Language.StringByID(R.MyInternationalizationString.AirerUp),
                Language.StringByID(R.MyInternationalizationString.AirerStop),
                Language.StringByID(R.MyInternationalizationString.AirerDown),
@@ -183,630 +183,630 @@
                Language.StringByID(R.MyInternationalizationString.AirerLight)
             };
 
-      for (int i = 0; i < stringText.Length; i++)
-      {
-        var btnText = new Button()
-        {
-          Width = Application.GetRealWidth(69 + 20),
-          Height = Application.GetRealHeight(46),
-          TextColor = ZigbeeColor.Current.XMGray2,
-          TextSize = 12,
-          Text = stringText[i],
-        };
-        frameWhiteBack.AddChidren(btnText);
-
-        switch (i)
-        {
-          case 0:
-            btnText.X = Application.GetRealWidth(128);
-            btnText.Y = Application.GetRealHeight(780);
-            break;
-          case 1:
-            btnText.X = Application.GetRealWidth(439);
-            btnText.Y = Application.GetRealHeight(780);
-            break;
-          case 2:
-            btnText.X = Application.GetRealWidth(747);
-            btnText.Y = Application.GetRealHeight(780);
-            break;
-          case 3:
-            btnText.X = Application.GetRealWidth(94);
-            btnText.Y = Application.GetRealHeight(1022);
-            btnText.BackgroundColor = 0xff00ff;
-            break;
-          case 4:
-            btnText.X = Application.GetRealWidth(324);
-            btnText.Y = Application.GetRealHeight(1022);
-            btnText.BackgroundColor = 0xff00ff;
-            break;
-          case 5:
-            btnText.X = Application.GetRealWidth(552);
-            btnText.Y = Application.GetRealHeight(1022);
-            break;
-          case 6:
-            btnText.X = Application.GetRealWidth(782);
-            btnText.BackgroundColor = 0xff00ff;
-            btnText.Y = Application.GetRealHeight(1022);
-            break;
-        }
-      }
-
-      //鍙崇澶�  {鐑樺共銆侀骞插拰娑堟瘨鐨勮缃粯璁ゆ椂闂存殏鏃跺彇鍘绘帀锛屼笖鍊掕鏃朵篃鍘绘帀锛屽洜涓虹涓夋柟璁惧涓嶆敮鎸併��
-      //TimeShow(frameWhiteBack);
-
-      ClickEventHander();
-
-    }
-
-    #endregion
-
-    #region 鈻� 鏃堕棿鏄剧ず_______________________
-
-    /// <summary>
-    /// 鍙戦�佺獥甯樺懡浠�
-    /// </summary>
-    /// <param name="comand"></param>
-    private void TimeShow(FrameLayout frameWhiteBack)
-    {
-      //鐑樺共鏃堕棿
-      btnDryTimeText = new Button()
-      {
-        Width = Application.GetRealWidth(109 + 10),
-        Height = Application.GetRealHeight(40),
-        X = Application.GetRealWidth(81),
-        Y = Application.GetRealHeight(1092),
-        TextColor = ZigbeeColor.Current.XMOrange,
-        TextSize = 10,
-        Text = GetTimeString(airer.DryRemainTime),
-      };
-      frameWhiteBack.AddChidren(btnDryTimeText);
-
-      //椋庡共鏃堕棿
-      btnWindTimeText = new Button()
-      {
-        Width = Application.GetRealWidth(109 + 10),
-        Height = Application.GetRealHeight(40),
-        TextColor = ZigbeeColor.Current.XMOrange,
-        TextSize = 10,
-        X = Application.GetRealWidth(311),
-        Y = btnDryTimeText.Y,
-        Text = GetTimeString(airer.WindRemainTime),
-      };
-      frameWhiteBack.AddChidren(btnWindTimeText);
-
-      //娑堟瘨鏃堕棿
-      btnDisinfectTimeText = new Button()
-      {
-        Width = Application.GetRealWidth(109 + 10),
-        Height = Application.GetRealHeight(40),
-        TextColor = ZigbeeColor.Current.XMOrange,
-        TextSize = 10,
-        Text = GetTimeString(airer.DisinfectRemainTime),
-        X = Application.GetRealWidth(539),
-        Y = btnDryTimeText.Y,
-      };
-      frameWhiteBack.AddChidren(btnDisinfectTimeText);
-
-      var rowAirer = new AiererTimeControl(0);
-      rowAirer.DetailCardActionTimeEvent += (timeCur, typeCur) =>
-      {
-        switch (typeCur)
-        {
-          case 1:
-            btnDryTimeText.Text = GetTimeString(timeCur);
-            break;
-          case 2:
-            btnWindTimeText.Text = GetTimeString(timeCur);
-            break;
-          case 3:
-            btnDisinfectTimeText.Text = GetTimeString(timeCur);
-            break;
-        }
-      };
-      actionDry = (textTime) =>
-      {
-        btnDryTimeText.Text = textTime;
-        TimerHandler(airer);
-      };
-      actionWind = (textTime) =>
-     {
-       btnWindTimeText.Text = textTime;
-       TimerHandler(airer);
-     };
-      actionDisinfect = (textTime) =>
-      {
-        btnDisinfectTimeText.Text = textTime;
-        TimerHandler(airer);
-      };
-
-      TimerHandler(airer);
-    }
-
-    #endregion
-
-    #region 鈻� 鐐瑰嚮浜嬩欢澶勭悊_______________________
-    /// <summary>
-    /// 鐐瑰嚮浜嬩欢澶勭悊
-    /// </summary>
-    void ClickEventHander()
-    {
-      btnOpen.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佺獥甯樺懡浠�
-        this.SetCurtainCommand(0);
-      };
-      btnStop.ButtonClickEvent += (sender, e) =>
-      {
-        //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鍒欐鍔熻兘鏃犳晥
-        if (Common.Config.Instance.Home.IsVirtually == true)
-        {
-          return;
-        }
-        //鍙戦�佺獥甯樺懡浠�
-        this.SetCurtainCommand(2);
-      };
-      btnClose.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佺獥甯樺懡浠�
-        this.SetCurtainCommand(1);
-      };
-
-      btnDry.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佸紑鍏冲懡浠�
-        this.SetSwitchCommand(!btnDry.IsSelected, 4);
-      };
-      btnWind.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佸紑鍏冲懡浠�
-        this.SetSwitchCommand(!btnWind.IsSelected, 3);
-      };
-      btnDisinfect.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佸紑鍏冲懡浠�
-        this.SetSwitchCommand(!btnDisinfect.IsSelected, 5);
-      };
-      btnLight.ButtonClickEvent += (sender, e) =>
-      {
-        //鍙戦�佸紑鍏冲懡浠�
-        this.SetSwitchCommand(!btnLight.IsSelected, 2);
-      };
-    }
-    #endregion
-
-    #region 鈻� 鍙戦�佸紑鍏冲懡浠______________________ 
-    /// <summary>
-    /// 鍙戦�佸紑鍏冲懡浠�
-    ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘
-    ///鍥炶矾1:绐楀笜鎺у埗
-    ///鍥炶矾2:鐓ф槑鎺у埗
-    ///鍥炶矾3:椋庡共鎺у埗  
-    ///鍥炶矾4:鐑樺共鎺у埗
-    ///鍥炶矾5:娑堟瘨鎺у埗
-    /// </summary>
-    /// <param name="isOpen">鍙戦�佺姸鎬�</param>
-    /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param>
-    private void SetSwitchCommand(bool isOpen, int type)
-    {
-      //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹� 
-      if (Common.Config.Instance.Home.IsVirtually == true)
-      {
-        switch (type)
-        {
-          case 2:
-            ((Airer)this.device).OnOffStatus = isOpen == true ? 1 : 0;
-            //鍙樻洿鍗$墖鐘舵��
-            this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2);
-            break;
-          case 3:
-            ((Airer)this.device).WindOnOffStatus = isOpen == true ? 1 : 0;
-            if (isOpen)
+            for (int i = 0; i < stringText.Length; i++)
             {
-              airer.WindRemainTime = airer.WindTime;
-            }
-            //鍙樻洿鍗$墖鐘舵��
-            this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3);
-            break;
-          case 4:
-            ((Airer)this.device).DryOnOffStatus = isOpen == true ? 1 : 0;
-            if (isOpen)
-            {
-              airer.DryRemainTime = airer.DryTime;
-            }
-            //鍙樻洿鍗$墖鐘舵��
-            this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4);
-            break;
-          case 5:
-            ((Airer)this.device).DisinfectOnOffStatus = isOpen == true ? 1 : 0;
-            if (isOpen)
-            {
-              airer.DisinfectRemainTime = airer.DisinfectTime;
-            }
-            //鍙樻洿鍗$墖鐘舵��
-            this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5);
-            break;
-        }
-        return;
-      }
-
-      //妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅
-      var listControl = new List<ButtonBase>();
-      listControl.Add(btnDry);
-      listControl.Add(btnWind);
-      listControl.Add(btnDisinfect);
-      listControl.Add(btnLight);
-      this.StartCheckResponeResult(listControl, (result) =>
-      {
-        //鎺ユ敹鍒扮綉鍏冲洖澶�
-        if (result == true)
-        {
-          HdlThreadLogic.Current.RunMain(() =>
+                var btnText = new Button()
                 {
-                  //鍙樻洿鍗$墖鐘舵��
-                  switch (type)
-                  {
+                    Width = Application.GetRealWidth(69 + 20),
+                    Height = Application.GetRealHeight(46),
+                    TextColor = ZigbeeColor.Current.XMGray2,
+                    TextSize = 12,
+                    Text = stringText[i],
+                };
+                frameWhiteBack.AddChidren(btnText);
+
+                switch (i)
+                {
+                    case 0:
+                        btnText.X = Application.GetRealWidth(128);
+                        btnText.Y = Application.GetRealHeight(780);
+                        break;
+                    case 1:
+                        btnText.X = Application.GetRealWidth(439);
+                        btnText.Y = Application.GetRealHeight(780);
+                        break;
                     case 2:
-                      bool statu = ((Airer)this.device).OnOffStatus == 1;
-                      this.RefreshSwitchStatu(statu, type);
-                      break;
+                        btnText.X = Application.GetRealWidth(747);
+                        btnText.Y = Application.GetRealHeight(780);
+                        break;
                     case 3:
-                      bool statu5 = ((Airer)this.device).WindOnOffStatus == 1;
-                      this.RefreshSwitchStatu(statu5, type);
-                      break;
+                        btnText.X = Application.GetRealWidth(94);
+                        btnText.Y = Application.GetRealHeight(1022);
+                        btnText.BackgroundColor = 0xff00ff;
+                        break;
                     case 4:
-                      bool statu4 = ((Airer)this.device).DryOnOffStatus == 1;
-                      this.RefreshSwitchStatu(statu4, type);
-                      break;
+                        btnText.X = Application.GetRealWidth(324);
+                        btnText.Y = Application.GetRealHeight(1022);
+                        btnText.BackgroundColor = 0xff00ff;
+                        break;
                     case 5:
-                      bool statu3 = ((Airer)this.device).DisinfectOnOffStatus == 1;
-                      this.RefreshSwitchStatu(statu3, type);
-                      break;
-                  }
+                        btnText.X = Application.GetRealWidth(552);
+                        btnText.Y = Application.GetRealHeight(1022);
+                        break;
+                    case 6:
+                        btnText.X = Application.GetRealWidth(782);
+                        btnText.BackgroundColor = 0xff00ff;
+                        btnText.Y = Application.GetRealHeight(1022);
+                        break;
+                }
+            }
 
-                });
+            //鍙崇澶�  {鐑樺共銆侀骞插拰娑堟瘨鐨勮缃粯璁ゆ椂闂存殏鏃跺彇鍘绘帀锛屼笖鍊掕鏃朵篃鍘绘帀锛屽洜涓虹涓夋柟璁惧涓嶆敮鎸併��
+            //TimeShow(frameWhiteBack);
+
+            ClickEventHander();
+
         }
-      });
 
-      //鎵撳紑
-      //switch (type)
-      //{ 
-      //  case 3:
-      //鍙戦�侀粯璁ゆ椂闂�
-      //if (airer.WindTime == 0)
-      //{
-      //  airer.WindTime = 180;
-      //}
-      //airer.SetAirerFunTimeDevice(airer.WindTime, 3);
-      //  break;
-      //case 4:
-      //鍙戦�侀粯璁ゆ椂闂�
-      //if (airer.DryTime == 0)
-      //{
-      //  airer.DryTime = 180;
-      //}
-      //airer.SetAirerFunTimeDevice(airer.DryTime, 4);
-      //  break;
-      //case 5:
-      //鍙戦�侀粯璁ゆ椂闂� 
-      //if (airer.DisinfectTime == 0)
-      //{
-      //  airer.DisinfectTime = 30;
-      //}
-      //airer.SetAirerFunTimeDevice(airer.DisinfectTime, 5);
-      //    break;
-      //}
-      if (isOpen == true)
-      {
-        airer.SwitchControl(1, type);
-      }
-      else
-      {
-        airer.SwitchControl(0, type);
-      }
-    }
+        #endregion
 
-    #endregion
+        #region 鈻� 鏃堕棿鏄剧ず_______________________
 
-    #region 鈻� 鍙戦�佺獥甯樺懡浠______________________
-
-    /// <summary>
-    /// 鍙戦�佺獥甯樺懡浠�
-    ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘
-    ///鍥炶矾1:绐楀笜鎺у埗
-    ///鍥炶矾2:鐓ф槑鎺у埗
-    ///鍥炶矾3:椋庡共鎺у埗  
-    ///鍥炶矾4:鐑樺共鎺у埗
-    ///鍥炶矾5:娑堟瘨鎺у埗
-    /// </summary>
-    /// <param name="comand"></param>
-    private void SetCurtainCommand(int comand)
-    {
-      //
-      this.device.DeviceEpoint = 1;
-      //鍙戦�佸懡浠�
-      ((Airer)device).AirerUpDownStopControl(comand);
-    }
-
-    #endregion
-
-    #region 鈻� 鍒锋柊寮�鍏崇姸鎬乢______________________
-
-    /// <summary>
-    /// 鍒锋柊寮�鍏崇姸鎬�
-    /// </summary>
-    /// <param name="isOpen">鎵撳紑鐘舵��</param>
-    /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param>
-    private void RefreshSwitchStatu(bool isOpen, int type)
-    {
-      switch (type)
-      {
-        case 2:
-          btnLight.IsSelected = isOpen;
-          break;
-        case 3:
-          btnWind.IsSelected = isOpen;
-          //btnWindTimeText.Text = GetTimeString(airer.WindRemainTime);
-          //if (!isOpen)
-          //{
-          //  airer.WindRemainTime = 0;
-          //}
-          break;
-        case 4:
-          btnDry.IsSelected = isOpen;
-          //btnDryTimeText.Text = GetTimeString(airer.DryRemainTime);
-          //if (!isOpen)
-          //{
-          //  airer.DryRemainTime = 0;
-          //}
-          break;
-        case 5:
-          btnDisinfect.IsSelected = isOpen;
-          //btnDisinfectTimeText.Text = GetTimeString(airer.DisinfectRemainTime);
-          //if (!isOpen)
-          //{
-          //  airer.DisinfectRemainTime = 0;
-          //}
-          break;
-      }
-      //璁剧疆鐘舵�佹枃瀛�
-      this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
-    }
-
-    #endregion
-
-    #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________
-
-    /// <summary>
-    /// 妫�娴嬬綉鍏崇殑鍙嶉缁撴灉(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport)
-    /// </summary>
-    /// <param name="comandDiv">鍛戒护鍖哄垎</param>
-    /// <param name="report">涓婃姤鏁版嵁</param>
-    /// <returns></returns>
-    public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
-    {
-      if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�)
-      {
-        HdlThreadLogic.Current.RunMain(() =>
+        /// <summary>
+        /// 鍙戦�佺獥甯樺懡浠�
+        /// </summary>
+        /// <param name="comand"></param>
+        private void TimeShow(FrameLayout frameWhiteBack)
         {
-          //鍙樻洿鍗$墖鐘舵��
-          switch (report.DeviceEpoint)
-          {
-            case 2:
-              this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2);
-              break;
-            case 3:
-              this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3);
-              break;
-            case 4:
-              this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4);
-              break;
-            case 5:
-              this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5);
-              break;
-          }
-        });
-        return true;
-      }
-      return false;
-    }
+            //鐑樺共鏃堕棿
+            btnDryTimeText = new Button()
+            {
+                Width = Application.GetRealWidth(109 + 10),
+                Height = Application.GetRealHeight(40),
+                X = Application.GetRealWidth(81),
+                Y = Application.GetRealHeight(1092),
+                TextColor = ZigbeeColor.Current.XMOrange,
+                TextSize = 10,
+                Text = GetTimeString(airer.DryRemainTime),
+            };
+            frameWhiteBack.AddChidren(btnDryTimeText);
 
-    #endregion
+            //椋庡共鏃堕棿
+            btnWindTimeText = new Button()
+            {
+                Width = Application.GetRealWidth(109 + 10),
+                Height = Application.GetRealHeight(40),
+                TextColor = ZigbeeColor.Current.XMOrange,
+                TextSize = 10,
+                X = Application.GetRealWidth(311),
+                Y = btnDryTimeText.Y,
+                Text = GetTimeString(airer.WindRemainTime),
+            };
+            frameWhiteBack.AddChidren(btnWindTimeText);
 
-    /// <summary>
-    /// 鏃堕棿鍊掕鏃惰缃�
-    /// <param name="type">鏅捐。鏋舵椂闂� 锛�1鐑樺共锛�2:椋庡共锛�3娑堟瘨</param>
-    /// </summary>
-    /// <param name="sceneContr"></param>
-    public async void TimerHandler(Airer airer)
-    {
-      if (airer.DryOnOffStatus == 1 && airer.DryRemainTime != 0)
-      {
-        new System.Threading.Thread(async () =>
-       {
-         while (airer.DryRemainTime > 0 && this.Parent != null)
-         {
-           System.Threading.Thread.Sleep(1000);
-           HdlThreadLogic.Current.RunMain(() =>
-                   {
-                     actionDry?.Invoke(GetTimeString(airer.DryRemainTime));
-                   }, ShowErrorMode.NO);
-           airer.DryRemainTime--;
-         }
-         HdlThreadLogic.Current.RunMain(() =>
-                 {
-                   if (this.Parent != null)
-                   {
-                     //鐩存帴寮�鍚疞oading鐗规晥
-                     actionDry?.Invoke("");
-                   }
-                 }, ShowErrorMode.NO);
-       })
-        { IsBackground = true }.Start();
-      }
-      if (airer.WindOnOffStatus == 1 && airer.WindRemainTime != 0)
-      {
-        //寮�鍚骞叉椂闂�
-        new System.Threading.Thread(async () =>
+            //娑堟瘨鏃堕棿
+            btnDisinfectTimeText = new Button()
+            {
+                Width = Application.GetRealWidth(109 + 10),
+                Height = Application.GetRealHeight(40),
+                TextColor = ZigbeeColor.Current.XMOrange,
+                TextSize = 10,
+                Text = GetTimeString(airer.DisinfectRemainTime),
+                X = Application.GetRealWidth(539),
+                Y = btnDryTimeText.Y,
+            };
+            frameWhiteBack.AddChidren(btnDisinfectTimeText);
+
+            var rowAirer = new AiererTimeControl(0);
+            rowAirer.DetailCardActionTimeEvent += (timeCur, typeCur) =>
+            {
+                switch (typeCur)
+                {
+                    case 1:
+                        btnDryTimeText.Text = GetTimeString(timeCur);
+                        break;
+                    case 2:
+                        btnWindTimeText.Text = GetTimeString(timeCur);
+                        break;
+                    case 3:
+                        btnDisinfectTimeText.Text = GetTimeString(timeCur);
+                        break;
+                }
+            };
+            actionDry = (textTime) =>
+            {
+                btnDryTimeText.Text = textTime;
+                TimerHandler(airer);
+            };
+            actionWind = (textTime) =>
+           {
+               btnWindTimeText.Text = textTime;
+               TimerHandler(airer);
+           };
+            actionDisinfect = (textTime) =>
+            {
+                btnDisinfectTimeText.Text = textTime;
+                TimerHandler(airer);
+            };
+
+            TimerHandler(airer);
+        }
+
+        #endregion
+
+        #region 鈻� 鐐瑰嚮浜嬩欢澶勭悊_______________________
+        /// <summary>
+        /// 鐐瑰嚮浜嬩欢澶勭悊
+        /// </summary>
+        void ClickEventHander()
         {
-          while (airer.WindRemainTime > 0 && this.Parent != null)
-          {
-            System.Threading.Thread.Sleep(1000);
-            HdlThreadLogic.Current.RunMain(() =>
-                    {
-                      actionWind?.Invoke(GetTimeString(airer.WindRemainTime));
-                    }, ShowErrorMode.NO);
-            airer.WindRemainTime--;
-          }
-          HdlThreadLogic.Current.RunMain(() =>
-                 {
-                   if (this.Parent != null)
-                   {
-                     //鐩存帴寮�鍚疞oading鐗规晥
-                     actionWind?.Invoke("");
-                   }
-                 }, ShowErrorMode.NO);
-        })
-        { IsBackground = true }.Start();
-      }
-      if (airer.DisinfectOnOffStatus == 1 && airer.DisinfectRemainTime != 0)
-      {
-        //寮�鍚秷姣掓椂闂�
-        new System.Threading.Thread(async () =>
-        {
-          while (airer.DisinfectRemainTime > 0 && this.Parent != null)
-          {
-            System.Threading.Thread.Sleep(1000);
-            HdlThreadLogic.Current.RunMain(() =>
-                    {
-                      actionDisinfect?.Invoke(GetTimeString(airer.DisinfectRemainTime));
-                    }, ShowErrorMode.NO);
-            airer.DisinfectRemainTime--;
-          }
+            btnOpen.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佺獥甯樺懡浠�
+                this.SetCurtainCommand(0);
+            };
+            btnStop.ButtonClickEvent += (sender, e) =>
+            {
+                //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鍒欐鍔熻兘鏃犳晥
+                if (Common.Config.Instance.Home.IsVirtually == true)
+                {
+                    return;
+                }
+                //鍙戦�佺獥甯樺懡浠�
+                this.SetCurtainCommand(2);
+            };
+            btnClose.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佺獥甯樺懡浠�
+                this.SetCurtainCommand(1);
+            };
 
-          HdlThreadLogic.Current.RunMain(() =>
-                  {
-                    if (this.Parent != null)
+            btnDry.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佸紑鍏冲懡浠�
+                this.SetSwitchCommand(!btnDry.IsSelected, 4);
+            };
+            btnWind.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佸紑鍏冲懡浠�
+                this.SetSwitchCommand(!btnWind.IsSelected, 3);
+            };
+            btnDisinfect.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佸紑鍏冲懡浠�
+                this.SetSwitchCommand(!btnDisinfect.IsSelected, 5);
+            };
+            btnLight.ButtonClickEvent += (sender, e) =>
+            {
+                //鍙戦�佸紑鍏冲懡浠�
+                this.SetSwitchCommand(!btnLight.IsSelected, 2);
+            };
+        }
+        #endregion
+
+        #region 鈻� 鍙戦�佸紑鍏冲懡浠______________________ 
+        /// <summary>
+        /// 鍙戦�佸紑鍏冲懡浠�
+        ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘
+        ///鍥炶矾1:绐楀笜鎺у埗
+        ///鍥炶矾2:鐓ф槑鎺у埗
+        ///鍥炶矾3:椋庡共鎺у埗  
+        ///鍥炶矾4:鐑樺共鎺у埗
+        ///鍥炶矾5:娑堟瘨鎺у埗
+        /// </summary>
+        /// <param name="isOpen">鍙戦�佺姸鎬�</param>
+        /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param>
+        private void SetSwitchCommand(bool isOpen, int type)
+        {
+            //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹� 
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                switch (type)
+                {
+                    case 2:
+                        ((Airer)this.device).OnOffStatus = isOpen == true ? 1 : 0;
+                        //鍙樻洿鍗$墖鐘舵��
+                        this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2);
+                        break;
+                    case 3:
+                        ((Airer)this.device).WindOnOffStatus = isOpen == true ? 1 : 0;
+                        if (isOpen)
+                        {
+                            airer.WindRemainTime = airer.WindTime;
+                        }
+                        //鍙樻洿鍗$墖鐘舵��
+                        this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3);
+                        break;
+                    case 4:
+                        ((Airer)this.device).DryOnOffStatus = isOpen == true ? 1 : 0;
+                        if (isOpen)
+                        {
+                            airer.DryRemainTime = airer.DryTime;
+                        }
+                        //鍙樻洿鍗$墖鐘舵��
+                        this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4);
+                        break;
+                    case 5:
+                        ((Airer)this.device).DisinfectOnOffStatus = isOpen == true ? 1 : 0;
+                        if (isOpen)
+                        {
+                            airer.DisinfectRemainTime = airer.DisinfectTime;
+                        }
+                        //鍙樻洿鍗$墖鐘舵��
+                        this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5);
+                        break;
+                }
+                return;
+            }
+
+            //妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅
+            var listControl = new List<ButtonBase>();
+            listControl.Add(btnDry);
+            listControl.Add(btnWind);
+            listControl.Add(btnDisinfect);
+            listControl.Add(btnLight);
+            this.StartCheckResponeResult(listControl, (result) =>
+            {
+                //鎺ユ敹鍒扮綉鍏冲洖澶�
+                if (result == true)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
                     {
-                      //鐩存帴寮�鍚疞oading鐗规晥 
-                      actionDisinfect?.Invoke("");
+                        //鍙樻洿鍗$墖鐘舵��
+                        switch (type)
+                        {
+                            case 2:
+                                bool statu = ((Airer)this.device).OnOffStatus == 1;
+                                this.RefreshSwitchStatu(statu, type);
+                                break;
+                            case 3:
+                                bool statu5 = ((Airer)this.device).WindOnOffStatus == 1;
+                                this.RefreshSwitchStatu(statu5, type);
+                                break;
+                            case 4:
+                                bool statu4 = ((Airer)this.device).DryOnOffStatus == 1;
+                                this.RefreshSwitchStatu(statu4, type);
+                                break;
+                            case 5:
+                                bool statu3 = ((Airer)this.device).DisinfectOnOffStatus == 1;
+                                this.RefreshSwitchStatu(statu3, type);
+                                break;
+                        }
+
+                    });
+                }
+            });
+
+            //鎵撳紑
+            //switch (type)
+            //{ 
+            //  case 3:
+            //鍙戦�侀粯璁ゆ椂闂�
+            //if (airer.WindTime == 0)
+            //{
+            //  airer.WindTime = 180;
+            //}
+            //airer.SetAirerFunTimeDevice(airer.WindTime, 3);
+            //  break;
+            //case 4:
+            //鍙戦�侀粯璁ゆ椂闂�
+            //if (airer.DryTime == 0)
+            //{
+            //  airer.DryTime = 180;
+            //}
+            //airer.SetAirerFunTimeDevice(airer.DryTime, 4);
+            //  break;
+            //case 5:
+            //鍙戦�侀粯璁ゆ椂闂� 
+            //if (airer.DisinfectTime == 0)
+            //{
+            //  airer.DisinfectTime = 30;
+            //}
+            //airer.SetAirerFunTimeDevice(airer.DisinfectTime, 5);
+            //    break;
+            //}
+            if (isOpen == true)
+            {
+                airer.SwitchControl(1, type);
+            }
+            else
+            {
+                airer.SwitchControl(0, type);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佺獥甯樺懡浠______________________
+
+        /// <summary>
+        /// 鍙戦�佺獥甯樺懡浠�
+        ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘
+        ///鍥炶矾1:绐楀笜鎺у埗
+        ///鍥炶矾2:鐓ф槑鎺у埗
+        ///鍥炶矾3:椋庡共鎺у埗  
+        ///鍥炶矾4:鐑樺共鎺у埗
+        ///鍥炶矾5:娑堟瘨鎺у埗
+        /// </summary>
+        /// <param name="comand"></param>
+        private void SetCurtainCommand(int comand)
+        {
+            //
+            this.device.DeviceEpoint = 1;
+            //鍙戦�佸懡浠�
+            ((Airer)device).AirerUpDownStopControl(comand);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊寮�鍏崇姸鎬乢______________________
+
+        /// <summary>
+        /// 鍒锋柊寮�鍏崇姸鎬�
+        /// </summary>
+        /// <param name="isOpen">鎵撳紑鐘舵��</param>
+        /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param>
+        private void RefreshSwitchStatu(bool isOpen, int type)
+        {
+            switch (type)
+            {
+                case 2:
+                    btnLight.IsSelected = isOpen;
+                    break;
+                case 3:
+                    btnWind.IsSelected = isOpen;
+                    //btnWindTimeText.Text = GetTimeString(airer.WindRemainTime);
+                    //if (!isOpen)
+                    //{
+                    //  airer.WindRemainTime = 0;
+                    //}
+                    break;
+                case 4:
+                    btnDry.IsSelected = isOpen;
+                    //btnDryTimeText.Text = GetTimeString(airer.DryRemainTime);
+                    //if (!isOpen)
+                    //{
+                    //  airer.DryRemainTime = 0;
+                    //}
+                    break;
+                case 5:
+                    btnDisinfect.IsSelected = isOpen;
+                    //btnDisinfectTimeText.Text = GetTimeString(airer.DisinfectRemainTime);
+                    //if (!isOpen)
+                    //{
+                    //  airer.DisinfectRemainTime = 0;
+                    //}
+                    break;
+            }
+            //璁剧疆鐘舵�佹枃瀛�
+            this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
+        }
+
+        #endregion
+
+        #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________
+
+        /// <summary>
+        /// 妫�娴嬬綉鍏崇殑鍙嶉缁撴灉(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport)
+        /// </summary>
+        /// <param name="comandDiv">鍛戒护鍖哄垎</param>
+        /// <param name="report">涓婃姤鏁版嵁</param>
+        /// <returns></returns>
+        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
+        {
+            if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍙樻洿鍗$墖鐘舵��
+                    switch (report.DeviceEpoint)
+                    {
+                        case 2:
+                            this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2);
+                            break;
+                        case 3:
+                            this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3);
+                            break;
+                        case 4:
+                            this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4);
+                            break;
+                        case 5:
+                            this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5);
+                            break;
                     }
-                  }, ShowErrorMode.NO);
-        })
-        { IsBackground = true }.Start();
-      }
-    }
-
-    /// <summary>
-    /// 鑾峰彇鍦烘櫙寤舵椂瀛楃涓�
-    /// </summary>
-    /// <param name="second"></param>
-    /// <returns></returns>
-    public static string GetTimeString(int second)
-    {
-      if (second == 0)
-      {
-        return null;
-      }
-      string timeStr = string.Empty;
-      int hour = second / 3600;
-      int minu = second % 3600 / 60;
-      int sec = second % 60;
-      string h = string.Empty;
-      string m = string.Empty;
-      string s = string.Empty;
-
-      if (hour > 0)
-      {
-        if (hour < 10)
-        {
-          h = "0" + hour;
-        }
-        else
-        {
-          h = hour.ToString();
-        }
-        timeStr += $"{h}:";
-
-        if (minu >= 0)
-        {
-          if (minu < 10)
-          {
-            m = "0" + minu;
-          }
-          else
-          {
-            m = minu.ToString();
-          }
-          timeStr += $"{m}:";
+                });
+                return true;
+            }
+            return false;
         }
 
-        if (sec >= 0)
-        {
-          if (sec < 10)
-          {
-            s = "0" + sec;
-          }
-          else
-          {
-            s = minu.ToString();
-          }
-          timeStr += $"{s}";
-        }
+        #endregion
 
-        return timeStr;
-      }
-      else
-      {
-        if (minu > 0)
+        /// <summary>
+        /// 鏃堕棿鍊掕鏃惰缃�
+        /// <param name="type">鏅捐。鏋舵椂闂� 锛�1鐑樺共锛�2:椋庡共锛�3娑堟瘨</param>
+        /// </summary>
+        /// <param name="sceneContr"></param>
+        public async void TimerHandler(Airer airer)
         {
-          timeStr = "00:";
-          if (minu < 10)
-          {
-            m = "0" + minu;
-          }
-          else
-          {
-            m = minu.ToString();
-          }
-          timeStr += $"{m}:";
-
-          if (sec >= 0)
-          {
-            if (sec < 10)
+            if (airer.DryOnOffStatus == 1 && airer.DryRemainTime != 0)
             {
-              s = "0" + sec;
+                new System.Threading.Thread(async () =>
+               {
+                   while (airer.DryRemainTime > 0 && this.Parent != null)
+                   {
+                       System.Threading.Thread.Sleep(1000);
+                       HdlThreadLogic.Current.RunMain(() =>
+                       {
+                           actionDry?.Invoke(GetTimeString(airer.DryRemainTime));
+                       }, ShowErrorMode.NO);
+                       airer.DryRemainTime--;
+                   }
+                   HdlThreadLogic.Current.RunMain(() =>
+                   {
+                       if (this.Parent != null)
+                       {
+                           //鐩存帴寮�鍚疞oading鐗规晥
+                           actionDry?.Invoke("");
+                       }
+                   }, ShowErrorMode.NO);
+               })
+                { IsBackground = true }.Start();
+            }
+            if (airer.WindOnOffStatus == 1 && airer.WindRemainTime != 0)
+            {
+                //寮�鍚骞叉椂闂�
+                new System.Threading.Thread(async () =>
+                {
+                    while (airer.WindRemainTime > 0 && this.Parent != null)
+                    {
+                        System.Threading.Thread.Sleep(1000);
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            actionWind?.Invoke(GetTimeString(airer.WindRemainTime));
+                        }, ShowErrorMode.NO);
+                        airer.WindRemainTime--;
+                    }
+                    HdlThreadLogic.Current.RunMain(() =>
+                   {
+                       if (this.Parent != null)
+                       {
+                           //鐩存帴寮�鍚疞oading鐗规晥
+                           actionWind?.Invoke("");
+                       }
+                   }, ShowErrorMode.NO);
+                })
+                { IsBackground = true }.Start();
+            }
+            if (airer.DisinfectOnOffStatus == 1 && airer.DisinfectRemainTime != 0)
+            {
+                //寮�鍚秷姣掓椂闂�
+                new System.Threading.Thread(async () =>
+                {
+                    while (airer.DisinfectRemainTime > 0 && this.Parent != null)
+                    {
+                        System.Threading.Thread.Sleep(1000);
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            actionDisinfect?.Invoke(GetTimeString(airer.DisinfectRemainTime));
+                        }, ShowErrorMode.NO);
+                        airer.DisinfectRemainTime--;
+                    }
+
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        if (this.Parent != null)
+                        {
+                            //鐩存帴寮�鍚疞oading鐗规晥 
+                            actionDisinfect?.Invoke("");
+                        }
+                    }, ShowErrorMode.NO);
+                })
+                { IsBackground = true }.Start();
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙寤舵椂瀛楃涓�
+        /// </summary>
+        /// <param name="second"></param>
+        /// <returns></returns>
+        public static string GetTimeString(int second)
+        {
+            if (second == 0)
+            {
+                return null;
+            }
+            string timeStr = string.Empty;
+            int hour = second / 3600;
+            int minu = second % 3600 / 60;
+            int sec = second % 60;
+            string h = string.Empty;
+            string m = string.Empty;
+            string s = string.Empty;
+
+            if (hour > 0)
+            {
+                if (hour < 10)
+                {
+                    h = "0" + hour;
+                }
+                else
+                {
+                    h = hour.ToString();
+                }
+                timeStr += $"{h}:";
+
+                if (minu >= 0)
+                {
+                    if (minu < 10)
+                    {
+                        m = "0" + minu;
+                    }
+                    else
+                    {
+                        m = minu.ToString();
+                    }
+                    timeStr += $"{m}:";
+                }
+
+                if (sec >= 0)
+                {
+                    if (sec < 10)
+                    {
+                        s = "0" + sec;
+                    }
+                    else
+                    {
+                        s = minu.ToString();
+                    }
+                    timeStr += $"{s}";
+                }
+
+                return timeStr;
             }
             else
             {
-              s = sec.ToString();
-            }
-            timeStr += $"{s}";
-          }
+                if (minu > 0)
+                {
+                    timeStr = "00:";
+                    if (minu < 10)
+                    {
+                        m = "0" + minu;
+                    }
+                    else
+                    {
+                        m = minu.ToString();
+                    }
+                    timeStr += $"{m}:";
 
-          return timeStr;
-        }
-        else
-        {
-          if (sec > 0)
-          {
-            timeStr = "00:00:";
-            if (sec < 10)
-            {
-              s = "0" + sec;
+                    if (sec >= 0)
+                    {
+                        if (sec < 10)
+                        {
+                            s = "0" + sec;
+                        }
+                        else
+                        {
+                            s = sec.ToString();
+                        }
+                        timeStr += $"{s}";
+                    }
+
+                    return timeStr;
+                }
+                else
+                {
+                    if (sec > 0)
+                    {
+                        timeStr = "00:00:";
+                        if (sec < 10)
+                        {
+                            s = "0" + sec;
+                        }
+                        else
+                        {
+                            s = sec.ToString();
+                        }
+                        timeStr += $"{s}";
+                        return timeStr;
+                    }
+                    else
+                    {
+                        return "";
+                    }
+                }
             }
-            else
-            {
-              s = sec.ToString();
-            }
-            timeStr += $"{s}";
-            return timeStr;
-          }
-          else
-          {
-            return "";
-          }
         }
-      }
     }
-  }
 }

--
Gitblit v1.8.0