using System; using System.Collections.Generic; using Shared.SimpleControl; namespace Shared.SimpleControl.Phone { public class DoorLockRelayPage : FrameLayout { /// /// 继电器门锁页面 /// public static DoorLockRelayPage curView; //FrameLayout roomBackgroundImage; LightDoorLock mLightDoorLock; Button btnClose; Button btnOpen; Button btnCloseText; Button btnOpenText; Button btnTitle; //Room room; /// /// 显示当前房间窗帘设备 /// public DoorLockRelayPage (LightDoorLock mLightDoorLock) { this.mLightDoorLock = mLightDoorLock; BackgroundColor = SkinStyle.Current.MainColor; //room = Room; curView = this; } /// /// 接受数据之后更新UI /// /// The user lights. public static void UpdateStatus (byte subnetID, byte deviceID, byte loopID, byte status) { Application.RunOnMainThread (() => { if (curView == null) return; if (curView.mLightDoorLock.ReadStatusSubnetID != subnetID || curView.mLightDoorLock.ReadStatusDeviceID != deviceID || curView.mLightDoorLock.ReadStatusLoopID != loopID) { return; } curView.mLightDoorLock.CurrentStatus = status; curView.RefreshButtonStatus (); }); } /// /// 房间模式进入的窗帘界面 /// /// The lights room. public void showmLightDoorLocksRoom () { #region 标题 var topView = new FrameLayout () { Y = Application.GetRealHeight (36), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (640), }; AddChidren (topView); btnTitle = new Button () { TextAlignment = TextAlignment.Center, Text = mLightDoorLock.Name, TextColor = SkinStyle.Current.TextColor1, TextSize = 19, }; topView.AddChidren (btnTitle); var logo = new Button () { Width = Application.GetRealWidth (154), Height = Application.GetRealHeight (90), X = Application.GetRealWidth (486), UnSelectedImagePath = MainPage.LogoString, }; topView.AddChidren (logo); var back = new Button () { Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; curView = null; }; #endregion AddLightDoorLock (mLightDoorLock as LightDoorLock, topView); ReadDoorLockStatus (); //Control.ControlBytesSendHasReturn (Command.ReadLightEquipmentAllLoopBrightness, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { }); //Control.ControlBytesSend (Command.ReadLightEquipmentAllLoopBrightness, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mLightDoorLock.PhysicsLoopID }); } /// /// 加载按钮 /// void AddLightDoorLock (LightDoorLock mmLightDoorLock, FrameLayout topView) { btnTitle.Text = mLightDoorLock.Name; var mLightDoorLockView = new FrameLayout(){ Height = Application.GetRealHeight (1009), Width = Application.GetRealWidth (640), Y = topView.Bottom, BackgroundColor = SkinStyle.Current.SysPanleDevicesBox, }; AddChidren (mLightDoorLockView); var lineView = new FrameLayout () { Y = Application.GetRealHeight (505), Height = Application.GetRealHeight (2), BackgroundColor = SkinStyle.Current.UserMenuItemButton }; mLightDoorLockView.AddChidren (lineView); btnClose = new Button () { Width = Application.GetMinRealAverage (132), Height = Application.GetMinRealAverage (176), X = Application.GetRealWidth (258), Y = Application.GetRealHeight (137), UnSelectedImagePath = "DoorLockPic/door_lock_relay_close.png", SelectedImagePath = "DoorLockPic/door_lock_relay_close_select.png", }; mLightDoorLockView.AddChidren (btnClose); btnCloseText = new Button () { Width = Application.GetMinRealAverage (640-200), Height = Application.GetMinRealAverage (34), X = Application.GetRealWidth (100), Y = btnClose.Bottom + Application.GetRealHeight(22), TextSize = 18, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, TextID = R.MyInternationalizationString.DoorlockClosed }; mLightDoorLockView.AddChidren (btnCloseText); btnOpen = new Button () { Width = Application.GetMinRealAverage (182), Height = Application.GetMinRealAverage (176), X = Application.GetRealWidth (258), Y = Application.GetRealHeight (634), UnSelectedImagePath = "DoorLockPic/door_lock_relay_open.png", SelectedImagePath = "DoorLockPic/door_lock_relay_open_select.png", }; mLightDoorLockView.AddChidren (btnOpen); btnOpenText = new Button () { Width = Application.GetMinRealAverage (640-200), Height = Application.GetMinRealAverage (34), X = Application.GetRealWidth (100), Y = btnOpen.Bottom + Application.GetRealHeight (22), TextSize = 18, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, TextID = R.MyInternationalizationString.DoorlockOpen }; mLightDoorLockView.AddChidren (btnOpenText); EventHandler CloseEventHandler = (sender, e) => { SetButtonIsOpenStatus (false); Control.ControlBytesSend (Command.UpdataCurtainModelStutas, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mmLightDoorLock.LoopID, 2 }); }; EventHandler OpenEventHandler = (sender, e) => { SetButtonIsOpenStatus (true); Control.ControlBytesSend (Command.UpdataCurtainModelStutas, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mmLightDoorLock.LoopID, 1 }); }; btnClose.MouseDownEventHandler += CloseEventHandler; btnCloseText.MouseDownEventHandler += CloseEventHandler; btnOpen.MouseDownEventHandler += OpenEventHandler; btnOpenText.MouseDownEventHandler += OpenEventHandler; } private void ReadDoorLockStatus () { System.Threading.Tasks.Task.Run (() => { byte [] bbb = Control.ControlBytesSendHasReturn (Command.ReadDryContactStatus, mLightDoorLock.ReadStatusSubnetID, mLightDoorLock.ReadStatusDeviceID, new byte [] { 1, mLightDoorLock.ReadStatusLoopID }); if (bbb != null) { Application.RunOnMainThread (() => { mLightDoorLock.CurrentStatus = bbb [2]; RefreshButtonStatus (); }); } }); } private void RefreshButtonStatus() { if (mLightDoorLock.CurrentStatus == 1) { SetButtonIsOpenStatus (true); } else { SetButtonIsOpenStatus (false); } } private void SetButtonIsOpenStatus (bool bOpen) { btnOpen.IsSelected = bOpen; btnClose.IsSelected = !bOpen; } ///// ///// 结束值 ///// ///// V. //void intSpped (int v) //{ // MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.Initiating)); // DateTime dateTime = DateTime.Now; // System.Threading.Tasks.Task.Run (() => { // while (curView != null) { // System.Threading.Thread.Sleep (500); // var bytes = Control.ControlBytesSendHasReturn (Command.ReadmLightDoorLockStatus, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { 17 }); // if (bytes == null) { // break; // } else { // if (2 <= bytes.Length && v == bytes [1]) { // if (mLightDoorLock.Type == DeviceType.mLightDoorLockRoller) { // (mLightDoorLock as mLightDoorLockRoller).Speed = 100 / ((DateTime.Now - dateTime).TotalMilliseconds - 300); // } else if (mLightDoorLock.Type == DeviceType.mLightDoorLockTrietex) { // (mLightDoorLock as mLightDoorLockTrietex).Speed = 100 / ((DateTime.Now - dateTime).TotalMilliseconds - 300); // } // break; // } // } // } // Application.RunOnMainThread (() => { // MainPage.Loading.Hide (); // }); // }); //} //void stop () //{ // try { // if (th != null) { // th.Abort (); // th = null; // //Control.ControlBytesSend (Command.ReadmLightDoorLockStatus, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { 17 }); // } // } catch { } //} } }