| | |
| | | if (readEnergyThead != null) |
| | | readEnergyThead.Abort (); |
| | | base.RemoveFromParent (); |
| | | MainPage.Loading.Hide (); |
| | | } |
| | | /// <summary> |
| | | /// 更新能源设备数据 |
| | |
| | | /// <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 (() => { |
| | | try { |
| | | foreach (var room in Room.Lists) { |
| | | if (room == null) |
| | | continue; |
| | |
| | | } 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 { |
| | | continue; |
| | | } |
| | | if (showTip) { |
| | | Application.RunOnMainThread (() => { |
| | | if (returnBytes == null) { |
| | | string tipString = Language.StringByID (R.MyInternationalizationString.ControlFailure); |
| | | Application.RunOnMainThread (() => { |
| | | |
| | | var btnTip = new Button () { |
| | | Height = Application.GetRealHeight (140), |
| | | Text = common.Name + tipString,// + "..." + controlDeviceIndex.ToString () + @"/" + sceneDeviceCount.ToString (), |
| | | Text = common.Name + ErrorCode.ControlFailure, |
| | | BackgroundColor = 0xFFD7D7D7, |
| | | }; |
| | | MainPage.MainFrameLayout.AddChidren (btnTip); |
| | | btnTip.MouseUpEventHandler += (sender, e) => { |
| | | btnTip.RemoveFromParent (); |
| | | //MainPage.MainFrameLayout.Remove (btnTip); |
| | | showTip = false; |
| | | //showTip = false; |
| | | }; |
| | | |
| | | |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | System.Threading.Thread.Sleep (3000); |
| | |
| | | //MainPage.MainFrameLayout.Remove (btnTip); |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } catch { |
| | | Console.WriteLine ("controlAllLight catch"); |
| | | } finally { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | | }); |
| | | //Console.WriteLine ("controlAllLight Loading.Hide"); |
| | | } |
| | | }); |
| | | } |
| | | /// <summary> |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | 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); |
| | |
| | | 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) { |
| | |
| | | }; |
| | | |
| | | 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 () { |
| | |
| | | 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 { |
| | |
| | | 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) { |
| | |
| | | } |
| | | thread = new Thread (() => { |
| | | try { |
| | | IsReadingAll = true; |
| | | List<string> readList = new List<string> (); |
| | | foreach (Room room in Room.Lists) { |
| | | //if (string.IsNullOrEmpty(room.Name)) { |
| | |
| | | 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 (); |
| | | // }); |
| | | // }); |
| | | //} |
| | | } |
| | | } |