| | |
| | | }); |
| | | //Utlis.WriteLine ("U1"); |
| | | } |
| | | |
| | | private readonly object SendLocker = new object (); |
| | | bool showTip = true; |
| | | /// <summary> |
| | | /// 控制所有的灯 |
| | |
| | | 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) { |
| | | |
| | | new System.Threading.Thread (() => { |
| | | mSendCount++; |
| | | new System.Threading.Thread (() => { |
| | | try { |
| | | lock (SendLocker) { |
| | | mSendCount++; |
| | | } |
| | | //mSendCount++; |
| | | |
| | | 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, 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 [] { |
| | | 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, 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 [] { |
| | | 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 |
| | | 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 { |
| | | returnBytes = new byte [] { 0x00 }; |
| | | } |
| | | if (showTip) { |
| | | if (returnBytes == null) { |
| | | Application.RunOnMainThread (() => { |
| | | } 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, 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 { |
| | | returnBytes = new byte [] { 0x00 }; |
| | | } |
| | | if (showTip) { |
| | | if (returnBytes == null) { |
| | | Application.RunOnMainThread (() => { |
| | | |
| | | 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; |
| | | }; |
| | | 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); |
| | | }); |
| | | }); |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | System.Threading.Thread.Sleep (3000); |
| | | Application.RunOnMainThread (() => { |
| | | btnTip.RemoveFromParent (); |
| | | //MainPage.MainFrameLayout.Remove (btnTip); |
| | | }); |
| | | }); |
| | | |
| | | |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | mSendCount--; |
| | | }) { IsBackground = true }.Start(); |
| | | //mSendCount--; |
| | | } catch { } finally { |
| | | lock (SendLocker) { |
| | | mSendCount--; |
| | | } |
| | | } |
| | | }) { IsBackground = true }.Start (); |
| | | |
| | | //等待100ms再发送第二个设备数据 |
| | | System.Threading.Thread.Sleep (100); |