From 965290476c027deb96891cde1095d9a100581a6b Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期四, 20 二月 2020 09:13:32 +0800 Subject: [PATCH] 2020-02-20 1.优化更新。 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs | 239 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 153 insertions(+), 86 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs index d76b1a7..5944f0a 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Light/UserDeviceToLight.cs @@ -35,6 +35,7 @@ if (readEnergyThead != null) readEnergyThead.Abort (); base.RemoveFromParent (); + MainPage.Loading.Hide (); } /// <summary> /// 鏇存柊鑳芥簮璁惧鏁版嵁 @@ -236,88 +237,105 @@ /// <param name="b">The blue component.</param> void controlAllLight (byte b) { + if (CommonPage.IsRemote) { + if (!SmartHome.MqttCommon.IsGatewayOnline) { + new Alert ("", "Gateway offline" + ErrorCode.ControlFailure, "Close").Show (); + return; + } + } + showTip = true; MainPage.Loading.Start ("Sending..."); System.Threading.Tasks.Task.Run (() => { - foreach (var room in Room.Lists) { - if (room == null) - continue; - if (string.IsNullOrEmpty (room.Name)) { - continue; - } - foreach (var common in room.DeviceList) { - byte [] returnBytes = null; - if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightRGB || common.Type == DeviceType.LightEnergySwitch - || common.Type == DeviceType.LightMixDimming || common.Type == DeviceType.LightMixSwitch || common.Type == DeviceType.LightDALI) { - if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightDALI) { - var light = (LightDimming)common; - if (b == 100) { - if (light.LastOpenBrightness == 0) { - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + try { + foreach (var room in Room.Lists) { + if (room == null) + continue; + if (string.IsNullOrEmpty (room.Name)) { + continue; + } + foreach (var common in room.DeviceList) { + byte [] returnBytes = null; + if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightRGB || common.Type == DeviceType.LightEnergySwitch + || common.Type == DeviceType.LightMixDimming || common.Type == DeviceType.LightMixSwitch || common.Type == DeviceType.LightDALI) { + if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightDALI) { + var light = (LightDimming)common; + if (b == 100) { + if (light.LastOpenBrightness == 0) { + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + } else + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, light.LastOpenBrightness, light.DelayTimeHeight, light.DelayTimeLow }); } else - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, light.LastOpenBrightness, light.DelayTimeHeight, light.DelayTimeLow }); - } else - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); - } else if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightEnergySwitch) { - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.LoopID, b, ((LightSwitch)common).DelayTimeHeight, ((LightSwitch)common).DelayTimeLow }); - } else if (common.Type == DeviceType.LightRGB) { - var light = (LightLogic)common; - byte b2 = b; - if (b2 == 100) { - if (light.LastOpenBrightness != 0) { - b2 = light.LastOpenBrightness; + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.LoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + } else if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightEnergySwitch) { + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.LoopID, b, ((LightSwitch)common).DelayTimeHeight, ((LightSwitch)common).DelayTimeLow }); + } else if (common.Type == DeviceType.LightRGB) { + var light = (LightLogic)common; + byte b2 = b; + if (b2 == 100) { + if (light.LastOpenBrightness != 0) { + b2 = light.LastOpenBrightness; + } } - } - returnBytes = Control.ControlBytesSendHasReturn (Command.SetLogicLoopColor, common.SubnetID, common.DeviceID, new byte [] { + returnBytes = Control.ControlBytesSendHasReturn (Command.SetLogicLoopColor, common.SubnetID, common.DeviceID, new byte [] { common.LoopID, b2, 254, light.CustomDelayTimeOpen,light.CustomDelayTimeClose, 3,light.RStatus,light.GStatus,light.BStatus,0,0}); - } else if (common.Type == DeviceType.LightMixDimming) { - var light = (LightMixDimming)common; - if (b == 100) { - if (light.LastOpenBrightness == 0) { - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + } else if (common.Type == DeviceType.LightMixDimming) { + var light = (LightMixDimming)common; + if (b == 100) { + if (light.LastOpenBrightness == 0) { + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + } else + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, light.LastOpenBrightness, light.DelayTimeHeight, light.DelayTimeLow }); } else - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, light.LastOpenBrightness, light.DelayTimeHeight, light.DelayTimeLow }); - } else + returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); + } else if (common.Type == DeviceType.LightMixSwitch) { + var light = (LightMixSwitch)common; returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); - } else if (common.Type == DeviceType.LightMixSwitch) { - var light = (LightMixSwitch)common; - returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { light.PhysicsLoopID, b, light.DelayTimeHeight, light.DelayTimeLow }); - } - if (showTip) { - Application.RunOnMainThread (() => { + } else { + continue; + } + if (showTip) { if (returnBytes == null) { - string tipString = Language.StringByID (R.MyInternationalizationString.ControlFailure); - var btnTip = new Button () { - Height = Application.GetRealHeight (140), - Text = common.Name + tipString,// + "..." + controlDeviceIndex.ToString () + @"/" + sceneDeviceCount.ToString (), - BackgroundColor = 0xFFD7D7D7, - }; - MainPage.MainFrameLayout.AddChidren (btnTip); - btnTip.MouseUpEventHandler += (sender, e) => { - btnTip.RemoveFromParent (); - //MainPage.MainFrameLayout.Remove (btnTip); - showTip = false; - }; + Application.RunOnMainThread (() => { - System.Threading.Tasks.Task.Run (() => { - System.Threading.Thread.Sleep (3000); - Application.RunOnMainThread (() => { - btnTip.RemoveFromParent (); + var btnTip = new Button () { + Height = Application.GetRealHeight (140), + Text = common.Name + ErrorCode.ControlFailure, + BackgroundColor = 0xFFD7D7D7, + }; + MainPage.MainFrameLayout.AddChidren (btnTip); + btnTip.MouseUpEventHandler += (sender, e) => { + btnTip.RemoveFromParent (); //MainPage.MainFrameLayout.Remove (btnTip); + //showTip = false; + }; + + + System.Threading.Tasks.Task.Run (() => { + System.Threading.Thread.Sleep (3000); + Application.RunOnMainThread (() => { + btnTip.RemoveFromParent (); + //MainPage.MainFrameLayout.Remove (btnTip); + }); }); + + }); } - }); + } } } } + } catch { + Console.WriteLine ("controlAllLight catch"); + } finally { + Application.RunOnMainThread (() => { + MainPage.Loading.Hide (); + }); + //Console.WriteLine ("controlAllLight Loading.Hide"); } - - Application.RunOnMainThread (() => { - MainPage.Loading.Hide (); - }); }); } /// <summary> @@ -403,8 +421,14 @@ continue; } var lightListForRoom = room.DeviceList.FindAll ((obj) => { - return obj.Type == DeviceType.LightDimming || obj.Type == DeviceType.LightSwitch || obj.Type == DeviceType.LightRGB - || obj.Type == DeviceType.LightMixSwitch || obj.Type == DeviceType.LightMixDimming || obj.Type == DeviceType.LightDALI; + return obj.Type == DeviceType.LightDimming + || obj.Type == DeviceType.LightSwitch + || obj.Type == DeviceType.LightRGB + || obj.Type == DeviceType.LightMixSwitch + || obj.Type == DeviceType.LightMixDimming + //|| obj.Type == DeviceType.LightEnergySwitch//2020-01-17 鏂板 + //|| obj.Type == DeviceType.LightEnergySocket + || obj.Type == DeviceType.LightDALI; }); if (lightListForRoom == null) { continue; @@ -655,13 +679,15 @@ } tempSwitch.MouseUpEventHandler += (sender3, e3) => { - tempSwitch.IsSelected = !tempSwitch.IsSelected; - if (tempSwitch.IsSelected) { - light.CurrentBrightness = 100; - } else { - light.CurrentBrightness = 0; - } - Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { sendLoopID, (byte)light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow }); + //tempSwitch.IsSelected = !tempSwitch.IsSelected; + //if (tempSwitch.IsSelected) { + // light.CurrentBrightness = 100; + //} else { + // light.CurrentBrightness = 0; + //} + int mSetBrightness = tempSwitch.IsSelected ? 0 : 100; + //Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { sendLoopID, (byte)light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow }); + SendControl.SendControlSetSingleLight (light, new byte [] { sendLoopID, (byte)mSetBrightness, light.DelayTimeHeight, light.DelayTimeLow }); new System.Threading.Thread (() => { Control.ControlBytesSend (Command.ReadAnalogValue, light.SubnetID, light.DeviceID, new byte [] { 10, light.LoopID }, SendCount.Zero); @@ -673,8 +699,7 @@ if (light.CurrentBrightness == 100) { tempSwitch.IsSelected = true; } - } - else if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightDALI || common.Type == DeviceType.LightMixDimming) { + } else if (common.Type == DeviceType.LightDimming || common.Type == DeviceType.LightDALI || common.Type == DeviceType.LightMixDimming) { LightCount++; byte sendLoopID = 0; if (common.Type == DeviceType.LightMixDimming) { @@ -792,23 +817,26 @@ }; tempSwitch.MouseUpEventHandler += (sender3, e3) => { - tempSwitch.IsSelected = !tempSwitch.IsSelected; + //tempSwitch.IsSelected = !tempSwitch.IsSelected; if (light.LastOpenBrightness == 0) { light.LastOpenBrightness = 100; } - if (tempSwitch.IsSelected) { - tempLightSeekBar.Progress = light.LastOpenBrightness; - } else { - tempLightSeekBar.Progress = 0; - } - light.CurrentBrightness = (byte)tempLightSeekBar.Progress; - Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { sendLoopID, light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow }); + //if (tempSwitch.IsSelected) { + // tempLightSeekBar.Progress = light.LastOpenBrightness; + //} else { + // tempLightSeekBar.Progress = 0; + //} + //light.CurrentBrightness = (byte)tempLightSeekBar.Progress; + + int mSetBrightness = tempSwitch.IsSelected ? 0 : light.LastOpenBrightness; + //Control.ControlBytesSend (Command.SetSingleLight, light.SubnetID, light.DeviceID, new byte [] { sendLoopID, light.CurrentBrightness, light.DelayTimeHeight, light.DelayTimeLow }); + SendControl.SendControlSetSingleLight (light, new byte [] { sendLoopID, (byte)mSetBrightness, light.DelayTimeHeight, light.DelayTimeLow }); + }; if (light.CurrentBrightness > 0) { tempSwitch.IsSelected = true; } - } - else if (common.Type == DeviceType.LightRGB) { + } else if (common.Type == DeviceType.LightRGB) { LightCount++; var light = common as LightLogic; var lightView = new FrameLayout () { @@ -937,6 +965,7 @@ if (c.Type == DeviceType.LightEnergySwitch) { Control.ControlBytesSend (Command.ReadAnalogValue, c.SubnetID, c.DeviceID, new byte [] { 11, c.LoopID }, SendCount.Zero); } + System.Threading.Thread.Sleep (500); } System.Threading.Thread.Sleep (10000); } catch { @@ -999,12 +1028,25 @@ Console.WriteLine ("L6"); } + + static bool IsReadingAll = false; static System.Threading.Thread thread; /// <summary> /// 璇诲彇璁惧鐘舵�� /// </summary> - public static void readAllStatus (bool isRead = false) + /// <param name="isRead"> 鏄惁鎵�鏈夎鍙栵紝涓嶆槸鐨勮瘽鍙鍙栦竴鍒嗛挓鍐呮病鍒锋柊杩囩姸鎬佺殑璁惧</param> + /// <param name="isCheckIsReadingAll">鏄惁鍒ゆ柇璇诲彇涓爣蹇楋紝濡傛灉璇诲彇绾跨▼娌″畬鎴愯繕鍦ㄨ鍙栦腑锛屽氨涓嶅啀璇诲彇</param> + public static void readAllStatus (bool isRead = false, bool isCheckIsReadingAll = false) { + if (isCheckIsReadingAll) { + if (IsReadingAll && !isRead) { + Console.WriteLine ("============>IsReadingAll Light璇诲彇涓�"); + return; + } + } +#if DEBUG + Console.WriteLine ("============>readAllStatus Light 寮�濮嬭鍙�"); +#endif if (isRead) { foreach (Room room in Room.Lists) { if (room == null) { @@ -1030,6 +1072,7 @@ } thread = new Thread (() => { try { + IsReadingAll = true; List<string> readList = new List<string> (); foreach (Room room in Room.Lists) { //if (string.IsNullOrEmpty(room.Name)) { @@ -1037,7 +1080,7 @@ //} var list = room.DeviceList.FindAll ((obj) => { return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && (obj.Type == DeviceType.LightDimming || obj.Type == DeviceType.LightSwitch || obj.Type == DeviceType.LightLogic - || obj.Type == DeviceType.LightEnergySwitch || obj.Type == DeviceType.LightEnergySocket || obj.Type == DeviceType.LightMixDimming || obj.Type == DeviceType.LightMixSwitch || obj.Type == DeviceType.FanModule); + || obj.Type == DeviceType.LightEnergySwitch || obj.Type == DeviceType.LightEnergySocket || obj.Type == DeviceType.LightMixDimming || obj.Type == DeviceType.LightMixSwitch || obj.Type == DeviceType.FanModule); }); foreach (Common common in list) { var s = common.Type + "_" + common.SubnetID + "_" + common.DeviceID; @@ -1063,11 +1106,35 @@ Control.ControlBytesSendHasReturn (Command.ReadLogicLoopColor, common.SubnetID, common.DeviceID, new byte [] { common.LoopID }); } } - } catch { } finally { + + IsReadingAll = false; + } catch { + IsReadingAll = false; + } finally { thread = null; } }); thread.Start (); } + + + ///// <summary> + ///// //2020-02-10 甯﹁繑鍥炵粨鏋滅殑璋冨厜鎺у埗 + ///// </summary> + ///// <param name="mLightCommon"></param> + ///// <param name="sendBytes"></param> + //public static void SendControlSetSingleLight (Common mLightCommon, byte[] sendBytes) + //{ + // MainPage.Loading.Start ("Sending..."); + // System.Threading.Tasks.Task.Run (() => { + // byte [] returnBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, mLightCommon.SubnetID, mLightCommon.DeviceID, sendBytes); + // Application.RunOnMainThread (() => { + // if (returnBytes == null) { + // new Alert ("", mLightCommon.Name + ErrorCode.ControlFailure, "Close").Show (); + // } + // MainPage.Loading.Hide (); + // }); + // }); + //} } } \ No newline at end of file -- Gitblit v1.8.0