using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { /// /// 后面界面主页面 /// public class SysHomePage : FrameLayout { /// /// 初始化当前视图 /// public void Init () { BackgroundColor = SkinStyle.Current.MainColor; InitTop (); sysMiddleInit (); //sysMiddle = new SysMiddle (); //sysMiddle.Init (); } void InitTop () { FrameLayout topView = new FrameLayout () { Height = Application.GetRealHeight (126), } ; AddChidren (topView); Button btnBack = new Button () { Y = Application.GetRealHeight (35), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", } ; topView.AddChidren (btnBack); btnBack.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; } ; Button btnPageTitle = new Button () { Width = Application.GetRealWidth (400), Height = Application.GetMinReal (90), TextID = R.MyInternationalizationString.GateWay,// = UserConfig.Instance.CurrentRegion.RegionName, TextColor = SkinStyle.Current.TextColor1, Gravity = Gravity.CenterHorizontal, TextAlignment = TextAlignment.Center, Y = Application.GetRealHeight (30), TextSize = 20, } ; topView.AddChidren (btnPageTitle); var logo = new Button () { Width = Application.GetRealWidth (154), Height = Application.GetRealHeight (90), X = Application.GetRealWidth (486), Y = Application.GetRealHeight (36), UnSelectedImagePath = MainPage.LogoString, }; topView.AddChidren (logo); } /// /// 记录当前选择的网关是哪个,在搜索设备的时候做记录 /// public static string curGatewayMAC = ""; public static string curGatewayIP = ""; /// /// 初始化当前视图 /// public void sysMiddleInit () { AddChidren (new Button () { Y = Application.GetRealHeight (126), BackgroundColor = SkinStyle.Current.ViewColor, Height = 1 }); var VerticalScrolViewMiddle = new VerticalScrolViewLayout () { Y = Application.GetRealHeight (126) + 1, Height = Application.GetRealHeight (Application.DesignHeight - 126 - 90), BackgroundColor = SkinStyle.Current.ViewColor }; AddChidren (VerticalScrolViewMiddle); ShowGateWayView (VerticalScrolViewMiddle); /// /// 底部 /// var AddSystemEquipmentButton = new Button () { Y = VerticalScrolViewMiddle.Bottom, Height = Application.GetRealHeight (90), TextID = R.MyInternationalizationString.AddSystemEquipment, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (AddSystemEquipmentButton); AddSystemEquipmentButton.MouseUpEventHandler += (sender, e) => { MainPage.Loading.Start (); System.Threading.Tasks.Task.Run (() => { try { #region 搜索设备 CommonPage.LocalPhoneFindDevice = true; CommonPage.RandomHigh = (byte)new Random ().Next (255); CommonPage.RandomLow = (byte)new Random ().Next (255); CommonPage.GateWayList.Clear (); CommonPage.FindGateway = true; //如果两次都没有数据反馈,就不读取 int readCount = 2; while (0 < readCount) { readCount--; System.IO.MemoryStream ms = new System.IO.MemoryStream (); ms.WriteByte (CommonPage.RandomHigh); ms.WriteByte (CommonPage.RandomLow); List list = CommonPage.GateWayList; int tempCount = list.Count; string s = ";"; for (int i = 0; i < list.Count; i++) { Common common = list [i]; if (s.Contains (";" + common.SubnetID.ToString () + ":" + common.DeviceID.ToString ())) continue; s += common.SubnetID.ToString () + ":" + common.DeviceID.ToString () + ";"; ms.WriteByte (common.SubnetID); ms.WriteByte (common.DeviceID); } Console.WriteLine ("搜索网关,搜索地址是:" + CommonPage.EndPoint.ToString () + " " + CommonPage.GateWayList.Count); Control control = new Control (); control.Send (new Target () { IPEndPoint = CommonPage.EndPoint, Command = Command.ReadGateway, SubnetID = 0xFF, DeviceID = 0xFF, AddData = ms.ToArray () }, SendCount.Zero, false); control.Send (new Target () { IPEndPoint = new System.Net.IPEndPoint (new Net.NetWiFi ().BroadcastIpAddress, 6000), Command = Command.ReadGateway, SubnetID = 0xFF, DeviceID = 0xFF, AddData = ms.ToArray () }, SendCount.Zero, false); System.Threading.Thread.Sleep (800); //如果数量不相等,就重置次数 if (tempCount != CommonPage.GateWayList.Count) { readCount = 2; } } CommonPage.FindGateway = false; if (CommonPage.GateWayList.Count > 0) { bool inLAN = false; if (CommonPage.GateWayList.Find ((obj) => UserConfig.Instance.GatewayMAC == obj.MAC.Replace (".", "")) != null) { inLAN = true; } if (inLAN) { foreach (var gateway in CommonPage.GateWayList) { IO.FileUtils.SaveEquipmentMessage (gateway); } } else if (MainPage.LoginUser.AccountString == "464027401@qq.com") { foreach (var gateway in CommonPage.GateWayList) { IO.FileUtils.SaveEquipmentMessage (gateway); } } else { Application.RunOnMainThread (() => { new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipHasNotInListMAC), Language.StringByID (R.MyInternationalizationString.confirm)).Show (); }); } } CommonPage.LocalPhoneFindDevice = false; #endregion Application.RunOnMainThread (() => { ShowGateWayView (VerticalScrolViewMiddle); }); } catch (Exception ex) { Console.WriteLine (ex.ToString ()); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); }; } /// /// 显示出已经查找到的网关设备 /// public void ShowGateWayView (VerticalScrolViewLayout VerticalScrolViewMiddle ) { VerticalScrolViewMiddle.RemoveAll (); bool firstInitWireless = true; bool firstInitMusic = true; bool firstInitOnePortBus = true; bool firstInitOfflintOnePortBus = true; bool firstInitRCU = true; try { List filesList = IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_').Length == 4 && obj.Split ('_') [0] == "Equipment"); foreach (var f in filesList) { string [] str = f.Split ('_'); if (str.Length == 4 && str [0] == "Equipment") { var one = System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (f)); var commGateway = Newtonsoft.Json.JsonConvert.DeserializeObject (one); if (commGateway == null) { continue; } // buspro上传的数据 if (commGateway.obj1 == 1 && (str [1].ToString () == DeviceType.OnePortWirelessFR.ToString () || str [1].ToString () == DeviceType.SuperWireless.ToString () || str [1].ToString () == DeviceType.OnePortBus.ToString ())) { if (firstInitOfflintOnePortBus) { FrameLayout OnePortWirelessFRFrameLayout = new FrameLayout () { Height = Application.GetRealHeight (110), Width = LayoutParams.MatchParent, BackgroundColor = SkinStyle.Current.TitileView, }; VerticalScrolViewMiddle.AddChidren (OnePortWirelessFRFrameLayout);//如果有无线网关才把顶栏加上 firstInitOfflintOnePortBus = false; Button btnIcon = new Button () { X = Application.GetRealWidth (15), Height = Application.GetRealHeight (66), Width = Application.GetRealWidth (66), UnSelectedImagePath = "Item/Wireless.png", SelectedImagePath = "Item/WirelessSelected.png", Gravity = Gravity.CenterVertical, }; OnePortWirelessFRFrameLayout.AddChidren (btnIcon); Button btnGatewayName = new Button () { X = btnIcon.Right, Height = Application.GetRealHeight (41), Width = Application.GetRealWidth (400), TextID = R.MyInternationalizationString.OfflineDevice, Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; OnePortWirelessFRFrameLayout.AddChidren (btnGatewayName); } RowLayout wirelessView = new RowLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (wirelessView); AddWirelessGateway (commGateway, null, wirelessView); } else if (str [1].ToString () == DeviceType.OnePortWirelessFR.ToString () || str [1].ToString () == DeviceType.SuperWireless.ToString ()) { var onePortWirelessFR = Newtonsoft.Json.JsonConvert.DeserializeObject (one); if (onePortWirelessFR == null) { continue; } if (firstInitWireless) { FrameLayout OnePortWirelessFRFrameLayout = new FrameLayout () { Height = Application.GetRealHeight (110), Width = LayoutParams.MatchParent, BackgroundColor = SkinStyle.Current.MainColor, }; VerticalScrolViewMiddle.AddChidren (OnePortWirelessFRFrameLayout); firstInitWireless = false; Button btnIcon = new Button () { X = Application.GetRealWidth (15), Height = Application.GetRealHeight (66), Width = Application.GetRealWidth (66), UnSelectedImagePath = "Item/Wireless.png", SelectedImagePath = "Item/WirelessSelected.png", Gravity = Gravity.CenterVertical, }; OnePortWirelessFRFrameLayout.AddChidren (btnIcon); Button btnGatewayName = new Button () { X = btnIcon.Right, Height = Application.GetRealHeight (41), Width = Application.GetRealWidth (400), TextID = R.MyInternationalizationString.WirelessGateWay, Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; OnePortWirelessFRFrameLayout.AddChidren (btnGatewayName); } RowLayout wirelessView = new RowLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (wirelessView); AddWirelessGateway (onePortWirelessFR, (sender, e) => { //new SystemWirelessGateway ().ShowWirelessGateway (onePortWirelessFR); var sysOneBus = new SystemWirelessGateway (); SystemHomePage.sysMiddleGatewayPageView.AddChidren (sysOneBus); sysOneBus.ShowWirelessGateway (onePortWirelessFR); SystemHomePage.sysMiddleGatewayPageView.PageIndex = SystemHomePage.sysMiddleGatewayPageView.ChildrenCount - 1; }, wirelessView); } else if (str [1].ToString () == DeviceType.OnePortBus.ToString ()) { var onePortBus = Newtonsoft.Json.JsonConvert.DeserializeObject (one); if (onePortBus == null) { continue; } if (firstInitOnePortBus) { FrameLayout OnePortBusFrameLayout = new FrameLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.MainColor, }; VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout); firstInitOnePortBus = false; Button button1 = new Button () { X = Application.GetRealWidth (15), Height = Application.GetRealHeight (66), Width = Application.GetRealWidth (66), UnSelectedImagePath = "Item/OnePort.png", SelectedImagePath = "Item/OnePortSelected.png", Gravity = Gravity.CenterVertical, }; OnePortBusFrameLayout.AddChidren (button1); Button textButton1 = new Button () { X = button1.Right, Height = Application.GetRealHeight (41), Width = Application.GetRealWidth (400), TextID = R.MyInternationalizationString.CableGateWay, Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; OnePortBusFrameLayout.AddChidren (textButton1); } RowLayout wirelessView = new RowLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (wirelessView); AddWirelessGateway (onePortBus, (sender, e) => { var sysOneBus = new SystemOnePortBus (); SystemHomePage.sysMiddleGatewayPageView.AddChidren (sysOneBus); sysOneBus.ShowOnePortBus (onePortBus); SystemHomePage.sysMiddleGatewayPageView.PageIndex = SystemHomePage.sysMiddleGatewayPageView.ChildrenCount - 1; }, wirelessView); } else if (str [1].ToString () == DeviceType.RCU.ToString ()) { var RCU_Devcie = Newtonsoft.Json.JsonConvert.DeserializeObject (one); if (RCU_Devcie == null) { continue; } if (!RCU_Devcie.LinkNetworkLine) { continue; } if (firstInitRCU) { FrameLayout OnePortBusFrameLayout = new FrameLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.MainColor, }; VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout); firstInitRCU = false; Button button1 = new Button () { X = Application.GetRealWidth (15), Height = Application.GetRealHeight (66), Width = Application.GetRealWidth (66), UnSelectedImagePath = "Item/OnePort.png", SelectedImagePath = "Item/OnePortSelected.png", Gravity = Gravity.CenterVertical, }; OnePortBusFrameLayout.AddChidren (button1); Button textButton1 = new Button () { X = button1.Right, Height = Application.GetRealHeight (41), Width = Application.GetRealWidth (400), Text = "RCU", Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; OnePortBusFrameLayout.AddChidren (textButton1); } RowLayout wirelessView = new RowLayout () { Height = Application.GetRealHeight (110), BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (wirelessView); AddWirelessGateway (RCU_Devcie, (sender, e) => { //new SystemRCU ().ShowRCU (RCU_Devcie); var sysOneBus = new SystemRCU (); SystemHomePage.sysMiddleGatewayPageView.AddChidren (sysOneBus); sysOneBus.ShowRCU (RCU_Devcie); SystemHomePage.sysMiddleGatewayPageView.PageIndex = SystemHomePage.sysMiddleGatewayPageView.ChildrenCount - 1; }, wirelessView); } else if (str [1].ToString () == DeviceType.MusicModel.ToString () || str [1].ToString () == DeviceType.MusicA31.ToString ()) { var musicModel = Newtonsoft.Json.JsonConvert.DeserializeObject (one); if (musicModel == null) { continue; } if (firstInitMusic) { FrameLayout MusicTitleView = new FrameLayout () { Height = Application.GetRealHeight (110), Width = LayoutParams.MatchParent, BackgroundColor = SkinStyle.Current.MainColor, }; VerticalScrolViewMiddle.AddChidren (MusicTitleView);//如果有无线网关才把顶栏加上 firstInitMusic = false; Button btnIcon = new Button () { X = Application.GetRealWidth (15), Height = Application.GetRealHeight (66), Width = Application.GetRealWidth (66), UnSelectedImagePath = "Item/Music.png", SelectedImagePath = "Item/Music.png", Gravity = Gravity.CenterVertical, }; MusicTitleView.AddChidren (btnIcon); Button btnGatewayName = new Button () { X = btnIcon.Right, Height = Application.GetRealHeight (41), Width = Application.GetRealWidth (400), TextID = R.MyInternationalizationString.MusicModel, Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, }; MusicTitleView.AddChidren (btnGatewayName); } RowLayout rlMusicModel = new RowLayout () { Height = Application.GetRealHeight (110), Width = LayoutParams.MatchParent, BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (rlMusicModel); AddWirelessGateway (musicModel, (sender, e) => { //new SystemRCU ().ShowRCU (RCU_Devcie); var sysMusic = new SystemMusicModel (); SystemHomePage.sysMiddleGatewayPageView.AddChidren (sysMusic); sysMusic.ShowMusicModel (musicModel); SystemHomePage.sysMiddleGatewayPageView.PageIndex = SystemHomePage.sysMiddleGatewayPageView.ChildrenCount - 1; }, rlMusicModel); } } Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } } catch (Exception ex) { Console.WriteLine (ex.ToString ()); } } /// /// 显示网关 /// void AddWirelessGateway (Common common, EventHandler eHandler, RowLayout rowView) { int subnetID = common.SubnetID; string remark = common.Name; Button btnDelFile = new Button () { TextID = R.MyInternationalizationString.Del, BackgroundColor = SkinStyle.Current.DelColor, }; btnDelFile.MouseUpEventHandler += (sender, e) => { Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipDeleteEquipmentMessage) , Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); alert.Show (); alert.ResultEventHandler +=( sender1, e1) => { if (e1) { var delFile = IO.FileUtils.ReadFiles ().FindAll ((w) => { return (w.Split ('_') [0] == "Equipment") && (w.Split ('_') [2] == subnetID.ToString ()); }); for (int k = 0; k < delFile.Count; k++) { IO.FileUtils.DeleteFile (delFile [k]); } rowView.RemoveFromParent (); } }; }; rowView.AddRightView (btnDelFile); Button pointButton1 = new Button () { Width = Application.GetRealHeight (13), Height = Application.GetRealHeight (13), X = Application.GetRealWidth (60), UnSelectedImagePath = "Item/Point.png", SelectedImagePath = "Item/PointSelected.png", Gravity = Gravity.CenterVertical, }; rowView.AddChidren (pointButton1); Button nameButton1 = new Button () { Width = Application.GetRealWidth (342), Height = LayoutParams.MatchParent, Text = remark, TextAlignment = TextAlignment.CenterLeft, X = pointButton1.Right + Application.GetRealWidth (20), TextColor = SkinStyle.Current.TextColor1 }; rowView.AddChidren (nameButton1); Button rightButton1 = new Button () { X = Application.GetRealWidth (550), Width = Application.GetRealWidth (28), Height = Application.GetRealHeight (40), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/Right.png", SelectedImagePath = "Item/RightSelected.png", }; rowView.AddChidren (rightButton1); rightButton1.MouseUpEventHandler += eHandler; rowView.MouseUpEventHandler += eHandler; nameButton1.MouseUpEventHandler += eHandler; } } }