陈嘉乐
2021-03-16 e1ac4ab0e68024e6289e0b11756962d662749b04
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
@@ -17,13 +17,9 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// 电池图标
        /// 电池控件
        /// </summary>
        private IconViewControl btnBatteryIcon = null;
        /// <summary>
        /// 电池百分比控件
        /// </summary>
        private NormalViewControl btnBatteryView = null;
        private BatteryPersentControl btnBattery = null;
        /// <summary>
        /// 吸力调节图标
        /// </summary>
@@ -60,6 +56,14 @@
        /// 扫地机器人数据
        /// </summary>
        private WeepRobotData weepRobotData = new WeepRobotData();
        /// <summary>
        /// 是否在控制方向中
        /// </summary>
        private bool directionControling = false;
        /// <summary>
        /// 方向控制结束时间
        /// </summary>
        private DateTime directionFinishTime = DateTime.Now.AddDays(-1);
        #endregion
@@ -90,25 +94,16 @@
        /// </summary>
        private void InitFrameWhiteContent1()
        {
            //电池图标
            this.btnBatteryIcon = new IconViewControl(24);
            btnBatteryIcon.X = base.btnRoomName.Right + Application.GetRealWidth(24);
            btnBatteryIcon.Y = base.btnRoomName.Y - (btnBatteryIcon.IconSize - base.btnRoomName.Height) / 2;
            btnBatteryIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Battery.png";
            FrameWhiteCentet1.AddChidren(btnBatteryIcon);
            //电池百分比
            this.btnBatteryView = new NormalViewControl(30, 16, true);
            btnBatteryView.X = btnBatteryIcon.Right + Application.GetRealWidth(4);
            btnBatteryView.Y = btnBatteryIcon.Y + (btnBatteryIcon.Height - Application.GetRealHeight(16)) / 2;
            btnBatteryView.Text = this.weepRobotData.ElectricityLeft + "%";
            btnBatteryView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
            btnBatteryView.TextColor = CSS_Color.PromptingColor1;
            FrameWhiteCentet1.AddChidren(btnBatteryView);
            //电池控件
            this.btnBattery = new BatteryPersentControl();
            btnBattery.X = base.btnRoomName.Right + Application.GetRealWidth(24);
            FrameWhiteCentet1.AddChidren(btnBattery);
            btnBattery.Y = base.btnRoomName.Y - (btnBattery.Height - base.btnRoomName.Height) / 2;
            btnBattery.InitControl();
            //配置变更事件
            base.SettionFinishEvent += () =>
            {
                btnBatteryIcon.X = base.btnRoomName.Right + Application.GetRealWidth(24);
                btnBatteryView.X = btnBatteryIcon.Right + Application.GetRealWidth(4);
                btnBattery.X = base.btnRoomName.Right + Application.GetRealWidth(24);
            };
            //初始化中间的那个图像控制控件
@@ -122,10 +117,11 @@
            ImageControl.InitControl("FunctionIcon/Electrical/WeepRobot/ControlEnable.png", "FunctionIcon/Electrical/WeepRobot/ControlDisable.png",
                "FunctionIcon/Electrical/WeepRobot/ControlUp.png", "FunctionIcon/Electrical/WeepRobot/ControlDown.png",
                "FunctionIcon/Electrical/WeepRobot/ControlLeft.png", "FunctionIcon/Electrical/WeepRobot/ControlRight.png");
            //控制事件(不支持Enable和Disable,都归为Mid)
            ImageControl.ControlEvent += (select) =>
            //控制事件(只有enable,Mid,left,right,up,down。 enable:手指松开方向键后触发)
            ImageControl.NotRecoverControlEvent += (select) =>
            {
                //发送控制方向命令
                this.SendDirectionControlComand(select);
            };
            //吸力调节
@@ -137,6 +133,8 @@
            FrameWhiteCentet1.AddChidren(btnSuctionIcon);
            btnSuctionIcon.ButtonClickEvent += (sender, e) =>
            {
                //显示吸力调节选择界面
                this.ShowSuctionSelectView();
            };
            this.btnSuctionView = new NormalViewControl(80, 54, true);
            btnSuctionView.Y = btnSuctionIcon.Bottom + Application.GetRealHeight(10);
@@ -149,13 +147,14 @@
            //充电图标
            this.btnChargeIcon = new IconViewControl(28);
            btnChargeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Charge.png";
            btnChargeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/ChargeSelect.png";
            btnChargeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/ChargeSelect.png";
            btnChargeIcon.Y = btnSuctionIcon.Y;
            btnChargeIcon.X = btnSuctionIcon.Right + Application.GetRealWidth(50);
            FrameWhiteCentet1.AddChidren(btnChargeIcon);
            btnChargeIcon.ButtonClickEvent += (sender, e) =>
            {
                //发送充电命令
                this.SendComand("mode", "chargego");
            };
            var btnChargeView = new NormalViewControl(80, 18, true);
            btnChargeView.Y = btnSuctionView.Y;
@@ -171,9 +170,12 @@
            btnVoiceIcon.X = btnChargeIcon.Right + Application.GetRealWidth(50);
            btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
            btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
            btnVoiceIcon.IsSelected = true;
            FrameWhiteCentet1.AddChidren(btnVoiceIcon);
            btnVoiceIcon.ButtonClickEvent += (sender, e) =>
            {
                //发送静音命令
                this.SendComand("voice_switch", this.weepRobotData.VoiceSwitch == true ? "false" : "true");
            };
            this.btnVoiceView = new NormalViewControl(80, 18, true);
            btnVoiceView.Y = btnSuctionView.Y;
@@ -191,6 +193,8 @@
            FrameWhiteCentet1.AddChidren(btnModeIcon);
            btnModeIcon.ButtonClickEvent += (sender, e) =>
            {
                //显示清扫模式选择
                this.ShowCleanModeSelectView();
            };
            this.btnModeView = new NormalViewControl(80, 54, true);
            btnModeView.Y = btnSuctionView.Y;
@@ -227,6 +231,8 @@
            rowManment.AddRightArrow();
            rowManment.ButtonClickEvent += (sender, e) =>
            {
                var form = new TuyaWeepRobotConsumablesMagPage();
                form.AddForm(this.device, this.weepRobotData);
            };
            //历史记录
@@ -240,7 +246,130 @@
            rowHistory.AddRightArrow();
            rowHistory.ButtonClickEvent += (sender, e) =>
            {
                var form = new TuyaWeepRobotHistoryPage();
                form.AddForm(this.weepRobotData);
            };
        }
        #endregion
        #region ■ 吸力调节选择_______________________
        /// <summary>
        /// 显示吸力调节选择界面
        /// </summary>
        private void ShowSuctionSelectView()
        {
            //整个灰色界面
            var frameBack = new Dialog();
            var dialogBody = new NormalFrameLayout();
            frameBack.AddChidren(dialogBody);
            dialogBody.ButtonClickEvent = (sender, e) =>
            {
                frameBack.Close();
            };
            frameBack.Show();
            //菜单控件(吸力调节)
            var menuContr = new DialogTitleMenuControl(3, Language.StringByID(StringId.SuctionAdjustment));
            menuContr.X = Application.GetRealWidth(5);
            menuContr.Y = Application.GetRealHeight(241);
            menuContr.Width = Application.GetRealWidth(160);
            menuContr.Height = Application.GetRealHeight(200);
            dialogBody.AddChidren(menuContr);
            //吸力1档
            var iconPath = this.weepRobotData.Suction == "quiet" ? "FunctionIcon/Electrical/WeepRobot/SuctionSelect.png" : "FunctionIcon/Electrical/WeepRobot/Suction.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.SuctionOneGear), iconPath, this.weepRobotData.Suction == "quiet", () =>
            {
                frameBack.Close();
                //发送吸力命令
                this.SendComand("suction", "quiet");
            });
            //吸力2档
            iconPath = this.weepRobotData.Suction == "normal" ? "FunctionIcon/Electrical/WeepRobot/SuctionSelect.png" : "FunctionIcon/Electrical/WeepRobot/Suction.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.SuctionTwoGear), iconPath, this.weepRobotData.Suction == "normal", () =>
            {
                frameBack.Close();
                //发送吸力命令
                this.SendComand("suction", "normal");
            });
            //吸力3档
            iconPath = this.weepRobotData.Suction == "strong" ? "FunctionIcon/Electrical/WeepRobot/SuctionSelect.png" : "FunctionIcon/Electrical/WeepRobot/Suction.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.SuctionThreeGear), iconPath, this.weepRobotData.Suction == "strong", () =>
            {
                frameBack.Close();
                //发送吸力命令
                this.SendComand("suction", "strong");
            });
        }
        #endregion
        #region ■ 清扫模式选择_______________________
        /// <summary>
        /// 显示清扫模式选择界面
        /// </summary>
        private void ShowCleanModeSelectView()
        {
            //整个灰色界面
            var frameBack = new Dialog();
            var dialogBody = new NormalFrameLayout();
            frameBack.AddChidren(dialogBody);
            dialogBody.ButtonClickEvent = (sender, e) =>
            {
                frameBack.Close();
            };
            frameBack.Show();
            //菜单控件(清扫模式)
            var menuContr = new DialogTitleMenuControl(4, Language.StringByID(StringId.CleanMode));
            menuContr.X = Application.GetRealWidth(210);
            menuContr.Y = Application.GetRealHeight(197);
            menuContr.Width = Application.GetRealWidth(160);
            menuContr.Height = Application.GetRealHeight(243);
            dialogBody.AddChidren(menuContr);
            //自动清扫
            var iconPath = this.weepRobotData.Mode == "smart" ? "FunctionIcon/Electrical/WeepRobot/AutoModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/AutoMode.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.AutoClean), iconPath, this.weepRobotData.Mode == "smart", () =>
            {
                frameBack.Close();
                //发送模式命令
                this.SendComand("mode", "smart");
            });
            //随机清扫
            iconPath = this.weepRobotData.Mode == "random" ? "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.RandomClean), iconPath, this.weepRobotData.Mode == "random", () =>
            {
                frameBack.Close();
                //发送模式命令
                this.SendComand("mode", "random");
            });
            //螺旋清扫
            iconPath = this.weepRobotData.Mode == "spiral" ? "FunctionIcon/Electrical/WeepRobot/AreaModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/AreaMode.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.SpiralClean), iconPath, this.weepRobotData.Mode == "spiral", () =>
            {
                frameBack.Close();
                //发送模式命令
                this.SendComand("mode", "spiral");
            });
            //沿墙清扫
            iconPath = this.weepRobotData.Mode == "wall_follow" ? "FunctionIcon/Electrical/WeepRobot/WallModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/WallMode.png";
            menuContr.AddRowMenu(Language.StringByID(StringId.WallClean), iconPath, this.weepRobotData.Mode == "wall_follow", () =>
            {
                frameBack.Close();
                //发送模式命令
                this.SendComand("mode", "wall_follow");
            });
        }
        #endregion
@@ -267,23 +396,60 @@
        #region ■ 发送各种命令_______________________
        /// <summary>
        /// 发送开关命令
        /// 发送控制方向命令
        /// </summary>
        private void SendSwitchComand()
        /// <param name="direction">只有enable,Mid,left,right,up,down。 enable:手指松开方向键后触发</param>
        private void SendDirectionControlComand(DirectionEnum direction)
        {
            //this.btnSwitch.CanClick = false;
            if (direction == DirectionEnum.Mid)
            {
                //发送开关命令
                this.SendComand(FunctionAttributeKey.OnOff, this.weepRobotData.Cleaning == true ? "off" : "on");
            }
            else if (direction == DirectionEnum.Enable)
            {
                //停
                this.directionControling = false;
                this.directionFinishTime = DateTime.Now;
                this.SendComand("direction_control", "stop");
            }
            else if (direction == DirectionEnum.Left)
            {
                //左
                this.directionControling = true;
                this.SendComand("direction_control", "turn_left");
            }
            else if (direction == DirectionEnum.Right)
            {
                //右
                this.directionControling = true;
                this.SendComand("direction_control", "turn_right");
            }
            else if (direction == DirectionEnum.Up)
            {
                //上
                this.directionControling = true;
                this.SendComand("direction_control", "forward");
            }
            else if (direction == DirectionEnum.Down)
            {
                //下
                this.directionControling = true;
                this.SendComand("direction_control", "backward");
            }
        }
            //string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
            //HdlThreadLogic.Current.RunThread(() =>
            //{
            //    var dic = new Dictionary<string, string>();
            //    dic.Add(FunctionAttributeKey.OnOff, statu);
            //    Control.Ins.SendWriteCommand(this.device, dic, true);
            //    HdlThreadLogic.Current.RunMain(() =>
            //    {
            //        this.btnSwitch.CanClick = true;
            //    });
            //});
        /// <summary>
        /// 发送命令
        /// </summary>
        private void SendComand(string key, string i_value)
        {
            HdlThreadLogic.Current.RunThread(() =>
            {
                var dic = new Dictionary<string, string>();
                dic.Add(key, i_value);
                Control.Ins.SendWriteCommand(this.device, dic, true);
            }, ShowErrorMode.NO);
        }
        #endregion
@@ -299,21 +465,91 @@
            if (this.weepRobotData.VoiceSwitch == true)
            {
                //需要切换图标
                if (this.btnVoiceIcon.UnSelectedImagePath != "FunctionIcon/Electrical/WeepRobot/Mute.png")
                {
                    this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Mute.png";
                    this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/MuteSelect.png";
                }
                this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Mute.png";
                this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/MuteSelect.png";
            }
            else
            {
                //需要切换图标
                if (this.btnVoiceIcon.UnSelectedImagePath != "FunctionIcon/Electrical/WeepRobot/Voice.png")
                this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
                this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
            }
            //如果是清扫状态
            if (this.weepRobotData.Cleaning == true)
            {
                //吸力调节可用
                this.btnSuctionIcon.IsSelected = true;
                this.btnSuctionIcon.CanClick = true;
                //声音不可用
                //this.btnVoiceIcon.IsSelected = false;
                //this.btnVoiceIcon.CanClick = false;
                //清扫模式不可用
                this.btnModeIcon.IsSelected = false;
                this.btnModeIcon.CanClick = false;
                //方向按键不可用
                if (this.directionControling == false && (DateTime.Now - this.directionFinishTime).TotalSeconds >= 2)
                {
                    this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
                    this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
                    //在手动控制方向的过程中,不允许变更图片,并且结束之后,2秒内不接受任何反馈
                    this.ImageControl.SetDirectionImage(DirectionEnum.Disable);
                }
            }
            else
            {
                //吸力调节不可用
                this.btnSuctionIcon.IsSelected = false;
                this.btnSuctionIcon.CanClick = false;
                //声音可用
                //this.btnVoiceIcon.IsSelected = true;
                //this.btnVoiceIcon.CanClick = true;
                //清扫模式可用
                this.btnModeIcon.IsSelected = true;
                this.btnModeIcon.CanClick = true;
                //变更控制控件的图片
                if (this.directionControling == false && (DateTime.Now - this.directionFinishTime).TotalSeconds >= 2)
                {
                    //在手动控制方向的过程中,不允许变更图片,并且结束之后,2秒内不接受任何反馈
                    this.ImageControl.SetDirectionImage(DirectionEnum.Enable);
                }
            }
            //清扫模式
            if (this.weepRobotData.Mode == "random")
            {
                //自动清扫
                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/AutoMode.png";
                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/AutoModeSelect.png";
                this.btnModeView.TextID = StringId.AutoClean;
            }
            else if (this.weepRobotData.Mode == "smart")
            {
                //随机清扫
                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png";
                this.btnModeView.TextID = StringId.RandomClean;
            }
            else if (this.weepRobotData.Mode == "wall_follow")
            {
                //沿墙清扫
                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/WallMode.png";
                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/WallModeSelect.png";
                this.btnModeView.TextID = StringId.WallClean;
            }
            else if (this.weepRobotData.Mode == "spiral")
            {
                //螺旋清扫
                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/AreaMode.png";
                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/AreaModeSelect.png";
                this.btnModeView.TextID = StringId.SpiralClean;
            }
            else
            {
                //清扫模式
                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Clean.png";
                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/CleanSelect.png";
                this.btnModeView.TextID = StringId.CleanMode;
            }
            //电池电量
            this.btnBattery.SetValue(this.weepRobotData.ElectricityLeft);
        }
        #endregion
@@ -325,41 +561,42 @@
        /// </summary>
        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
        {
            foreach (var data in i_LocalDevice.attributes)
            for (int i = 0; i < i_LocalDevice.attributes.Count; i++)
            {
                var data = i_LocalDevice.attributes[i];
                //开关
                if (data.key == "on_off") { this.weepRobotData.Open = data.realValue.ToLower() == "on"; }
                if (data.key == "on_off") { this.weepRobotData.Cleaning = data.state.ToLower() == "on"; }
                //寻找机器
                else if (data.key == "seek") { this.weepRobotData.SearchRobot = data.realValue.ToLower() == "true"; }
                else if (data.key == "seek") { this.weepRobotData.SearchRobot = data.state.ToLower() == "true"; }
                //边刷重置
                else if (data.key == "reset_edge_brush") { this.weepRobotData.ResetEdgeBrush = data.realValue.ToLower() == "true"; }
                else if (data.key == "reset_edge_brush") { this.weepRobotData.ResetEdgeBrush = data.state.ToLower() == "true"; }
                //滚刷重置
                else if (data.key == "reset_roll_brush") { this.weepRobotData.ResetRollBrush = data.realValue.ToLower() == "true"; }
                else if (data.key == "reset_roll_brush") { this.weepRobotData.ResetRollBrush = data.state.ToLower() == "true"; }
                //滤网重置
                else if (data.key == "reset_filter") { this.weepRobotData.ResetFilter = data.realValue.ToLower() == "true"; }
                else if (data.key == "reset_filter") { this.weepRobotData.ResetFilter = data.state.ToLower() == "true"; }
                //吸力选择
                else if (data.key == "suction") { this.weepRobotData.Suction = data.realValue; }
                else if (data.key == "suction") { this.weepRobotData.Suction = data.state; }
                //工作模式
                else if (data.key == "mode") { this.weepRobotData.Mode = data.realValue; }
                else if (data.key == "mode") { this.weepRobotData.Mode = data.state; }
                //清扫方向   
                else if (data.key == "direction_control") { this.weepRobotData.DirectionControl = data.realValue; }
                else if (data.key == "direction_control") { this.weepRobotData.DirectionControl = data.state; }
                //声音开关
                else if (data.key == "voice_switch") { this.weepRobotData.VoiceSwitch = data.realValue.ToLower() == "true"; }
                else if (data.key == "voice_switch") { this.weepRobotData.VoiceSwitch = data.state.ToLower() == "true"; }
                //清扫面积
                else if (data.key == "clean_area")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.CleanArea = Convert.ToInt32(value);
                    }
                }
                //清扫记录   
                else if (data.key == "clean_record") { this.weepRobotData.CleanRecord = data.realValue; }
                else if (data.key == "clean_record") { this.weepRobotData.CleanRecord = data.state; }
                //边刷寿命
                else if (data.key == "edge_brush")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.EdgeBrush = Convert.ToInt32(value);
@@ -368,7 +605,7 @@
                //滚刷寿命
                else if (data.key == "roll_brush")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.RollBrush = Convert.ToInt32(value);
@@ -377,7 +614,7 @@
                //滤网寿命
                else if (data.key == "filter")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.Filter = Convert.ToInt32(value);
@@ -386,7 +623,7 @@
                //清扫时间
                else if (data.key == "clean_time")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.CleanTime = Convert.ToInt32(value);
@@ -395,7 +632,7 @@
                //剩余电量   
                else if (data.key == "electricity_left")
                {
                    var value = data.realValue;
                    var value = data.state;
                    if (value != string.Empty)
                    {
                        this.weepRobotData.ElectricityLeft = Convert.ToInt32(value);
@@ -411,12 +648,12 @@
        /// <summary>
        /// 扫地机器人的数据
        /// </summary>
        private class WeepRobotData
        public class WeepRobotData
        {
            /// <summary>
            /// 是否打开
            /// 是否处于清扫中
            /// </summary>
            public bool Open = true;
            public bool Cleaning = false;
            /// <summary>
            /// 寻找机器
            /// </summary>
@@ -438,7 +675,7 @@
            /// </summary>
            public string Suction = string.Empty;
            /// <summary>
            /// 工作模式(random:自动清扫 smart:定点清扫 wall_follow:沿墙清扫 spiral:区域清扫 chargego:充电)
            /// 工作模式(smart:自动清扫 random:随机清扫 wall_follow:沿墙清扫 spiral:螺旋清扫 chargego:充电)
            /// </summary>
            public string Mode = string.Empty;
            /// <summary>
@@ -470,7 +707,7 @@
            /// </summary>
            public int Filter = 0;
            /// <summary>
            /// 清扫时间(0-432000)
            /// 清扫时间(0-432000) 单位为分钟
            /// </summary>
            public int CleanTime = 0;
            /// <summary>