using System; using System.Collections.Generic; namespace Shared.SimpleControl.Phone { /// /// 后台中间界面 /// public class SystemMiddle : FrameLayout { /// /// 已升级 /// string text_Upgraded = "已升级"; /// /// 正在升级 /// string text_Upgrading = "正在升级"; /// /// 升级失败 /// string text_UpgradeFailed = "升级失败"; /// /// 未知版本 /// 无需升级 2022-12-08 14:23:07 /// string text_UnknownVersion = "无需升级"; /// /// 读取失败 /// string text_readFailure = "读取失败"; string text_reading = "读取中"; string text_search = "搜索并配置"; /// /// 中间界面 /// public VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout () { Height = Application.GetRealHeight (846+80), BackgroundColor = SkinStyle.Current.ViewColor }; /// /// 初始化当前视图 /// public void Init () { if(Language.CurrentLanguage != "Chinese") { text_Upgraded = "Upgraded"; text_Upgrading = "Upgrading"; text_UpgradeFailed = "Upgrade failed"; text_UnknownVersion = "No upgrade required"; text_readFailure = "Read failure"; text_search = "Search and configure"; text_reading = "Reading"; } VerticalScrolViewMiddle.BackgroundColor = SkinStyle.Current.ViewColor; AddChidren (VerticalScrolViewMiddle); InitBottomButton (); } /// /// 底部的按键,搜索网关 /// void InitBottomButton () { /// /// 底部 /// Button AddSystemEquipmentButton = new Button () { Y = Application.GetRealHeight (846 + 80), Height = Application.GetRealHeight (90), Text = text_search, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, BackgroundColor = SkinStyle.Current.MainColor }; AddChidren (AddSystemEquipmentButton); AddSystemEquipmentButton.MouseUpEventHandler += (sender, e) => { VerticalScrolViewMiddle.RemoveAll (); CommonPage.FindGateway = true; 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); var 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; Application.RunOnMainThread (() => { ShowGateWayView (); }); CommonPage.LocalPhoneFindDevice = false; #endregion } catch (Exception ex) { Console.WriteLine (ex.ToString ()); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } }); }; } /// /// 显示出已经查找到的网关设备 /// public void ShowGateWayView () { try { foreach (var gateway in CommonPage.GateWayList) { RowLayout wirelessView = new RowLayout () { Height = Application.GetRealHeight (93), BackgroundColor = SkinStyle.Current.ViewColor, }; VerticalScrolViewMiddle.AddChidren (wirelessView); showGatewayRow (gateway, wirelessView); } } catch (Exception ex) { Console.WriteLine (ex.ToString ()); } } /// /// 显示网关 /// void showGatewayRow (Common common, RowLayout wirelessView) { int subnetID = common.SubnetID; string remark = common.Name; 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, }; wirelessView.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, }; wirelessView.AddChidren (nameButton1); Button rightButton1 = new Button () { X = Application.GetRealWidth (480), Width = Application.GetRealWidth (100), Height = Application.GetRealHeight (40), Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, IsMoreLines = true, TextSize = 12, Text = text_reading }; wirelessView.AddChidren (rightButton1); new System.Threading.Thread (() => { var serverIPBytes = Control.ControlBytesSendHasReturn (Command.ReadGatewayServerIP, common.SubnetID, common.DeviceID, new byte [] { }); if (serverIPBytes != null) { try { string serverIP1 = serverIPBytes [0].ToString () + "." + serverIPBytes [1].ToString () + "." + serverIPBytes [2].ToString () + "." + serverIPBytes [3].ToString (); string serverIP1Point = ((serverIPBytes [4] * 256) + serverIPBytes [5]).ToString (); string serverIP2 = serverIPBytes [6].ToString () + "." + serverIPBytes [7].ToString () + "." + serverIPBytes [8].ToString () + "." + serverIPBytes [9].ToString (); string serverIP2Point = ((serverIPBytes [10] * 256) + serverIPBytes [11]).ToString (); if (serverIP1 == "118.31.3.103" || serverIP2 == "118.31.3.103") { Application.RunOnMainThread (() => { rightButton1.Text = text_Upgraded; rightButton1.TextColor = 0xFF00FF00; return; }); } else if (serverIP1 != "115.29.251.24" && serverIP2 != "115.29.251.24") { Application.RunOnMainThread (() => { rightButton1.Text = text_UnknownVersion; rightButton1.TextColor = 0xFF00FF00; return; }); } else { Application.RunOnMainThread (() => { rightButton1.Text = text_Upgrading; rightButton1.TextColor = 0xFF0000FF; }); if (serverIP1 == "115.29.251.24") { serverIP1 = "118.31.3.103"; serverIP1Point = "9999"; serverIPBytes [0] = 118; serverIPBytes [1] = 31; serverIPBytes [2] = 3; serverIPBytes [3] = 103; serverIPBytes [4] = Convert.ToByte (9999 / 256); serverIPBytes [5] = Convert.ToByte (9999 % 256); } if (serverIP2 == "115.29.251.24") { serverIP2 = "118.31.3.103"; serverIP2Point = "9999"; serverIPBytes [0 + 6] = 118; serverIPBytes [1 + 6] = 31; serverIPBytes [2 + 6] = 3; serverIPBytes [3 + 6] = 103; serverIPBytes [4 + 6] = Convert.ToByte (9999 / 256); serverIPBytes [5 + 6] = Convert.ToByte (9999 % 256); } var mobytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInternetInfo, common.SubnetID, common.DeviceID, serverIPBytes); if (mobytes == null || mobytes [0] == 0xF5) { Application.RunOnMainThread (() => { Application.RunOnMainThread (() => { rightButton1.Text = text_UpgradeFailed; rightButton1.TextColor = 0x99ff0000; }); }); } else { Application.RunOnMainThread (() => { Application.RunOnMainThread (() => { rightButton1.Text = text_Upgraded; rightButton1.TextColor = 0xFF00FF00; }); }); } } } catch (Exception ex) { Console.WriteLine ("一端口远程ip信息转译失败."); } } else { Application.RunOnMainThread (() => { rightButton1.Text = text_UnknownVersion; rightButton1.TextColor = 0xFF00FF00; }); } }) { IsBackground = true }.Start (); } } //public class SysMiddle : FrameLayout //{ // /// // /// 中间界面 // /// // public VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout () { // Height = Application.GetRealHeight (846), // BackgroundColor = SkinStyle.Current.ViewColor // }; // public static List hideListCommon = new List (); // public void Init () // { // RemoveAll (); // VerticalScrolViewMiddle.BackgroundColor = SkinStyle.Current.ViewColor; // AddChidren (VerticalScrolViewMiddle); // ShowEquipmentBase (); // } // /// // /// 显示设备列表信息. // /// // void ShowEquipmentBase () // { // VerticalScrolViewMiddle.RemoveAll (); // VerticalScrolViewMiddle.Height = Application.GetRealHeight (846 + 90); // hideListCommon = new List (); // List localFileList = IO.FileUtils.ReadFiles (); // List offlineDeviceList = new List (); // var gateWayListZ = localFileList.FindAll ((obj) => { // return obj.Split ('_').Length == 4 && obj.StartsWith ("Equipment_") && obj.EndsWith ("_0"); // }); // var gateWayList = gateWayListZ.FindAll ((obj) => { // return obj.Split ('_') [1].ToString () == DeviceType.OnePortBus.ToString () || // obj.Split ('_') [1].ToString () == DeviceType.RCU.ToString () || // obj.Split ('_') [1].ToString () == DeviceType.OnePortWirelessFR.ToString (); // }); // foreach (var offline in localFileList) { // if (offline.Split ('_').Length == 5 && offline.Split ('_') [0] == "Equipment") { // var ss = IO.FileUtils.ReadFile (offline); // Common commonOffline = Newtonsoft.Json.JsonConvert.DeserializeObject (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (offline))); // if (commonOffline == null) // continue; // if (commonOffline.obj1 == 1) { // offlineDeviceList.Add (offline); // } // } // } // foreach (var gatewayFileName in gateWayList) { // if (offlineDeviceList.Contains (gatewayFileName)) // continue; // var tempStrings = gatewayFileName.Split ('_'); // if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString () || // tempStrings [1].ToString () == DeviceType.RCU.ToString () || // tempStrings [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()) { // var one = System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (gatewayFileName)); // if (one.Length == 0) { // IO.FileUtils.DeleteFile (gatewayFileName); // continue; // } // #region titel // FrameLayout OnePortBusFrameLayout = new FrameLayout () { // Height = Application.GetRealHeight (98), // BackgroundColor = SkinStyle.Current.MainColor // }; // VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout); // Button btnLineTop = new Button () { // Height = 1, // BackgroundColor = 0xFF2f2f2f, // }; // VerticalScrolViewMiddle.AddChidren (btnLineTop); // FrameLayout busEquipmentBody = new FrameLayout () { // Height = 0, // Tag = 0, // }; // VerticalScrolViewMiddle.AddChidren (busEquipmentBody); // Button button1 = new Button () { // X = Application.GetRealWidth (20), // 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 = Application.GetRealWidth (20) + button1.Right, // Height = Application.GetRealHeight (41), // Width = Application.GetRealWidth (400), // Gravity = Gravity.CenterVertical, // TextAlignment = TextAlignment.CenterLeft, // TextColor = SkinStyle.Current.TextColor1, // }; // OnePortBusFrameLayout.AddChidren (textButton1); // Button downSelectedButton1 = new Button () { // X = Application.GetRealWidth (550), // Height = Application.GetRealHeight (46), // Width = Application.GetRealWidth (47), // UnSelectedImagePath = "Item/Down.png", // SelectedImagePath = "Item/DownSelected.png", // Gravity = Gravity.CenterVertical, // IsSelected = true, // }; // OnePortBusFrameLayout.AddChidren (downSelectedButton1); // EventHandler eHandler = (sender, e) => { // downSelectedButton1.IsSelected = !downSelectedButton1.IsSelected; // if (downSelectedButton1.IsSelected) { // busEquipmentBody.Height = Convert.ToInt32 (busEquipmentBody.Tag); // } else { // busEquipmentBody.Height = 0; // } // }; // downSelectedButton1.MouseUpEventHandler += eHandler; // button1.MouseUpEventHandler += eHandler; // textButton1.MouseUpEventHandler += eHandler; // #endregion // if (tempStrings [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()) { // var onePortWirelessFR = Newtonsoft.Json.JsonConvert.DeserializeObject (one); // textButton1.Text = onePortWirelessFR.Name; // button1.SelectedImagePath = "Item/WirelessSelected.png"; // button1.UnSelectedImagePath = "Item/Wireless.png"; // } else if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString ()) { // var onePortBus = Newtonsoft.Json.JsonConvert.DeserializeObject (one); // textButton1.Text = onePortBus.Name; // button1.SelectedImagePath = "Item/OnePortSelected.png"; // button1.UnSelectedImagePath = "Item/OnePort.png"; // } else if (tempStrings [1].ToString () == DeviceType.RCU.ToString ()) { // var rcu = Newtonsoft.Json.JsonConvert.DeserializeObject (one); // textButton1.Text = rcu.Name; // button1.SelectedImagePath = "Item/OnePortSelected.png"; // button1.UnSelectedImagePath = "Item/OnePort.png"; // } // button1.IsSelected = false; // int equipmentHeight = 0; // int count = 0; // foreach (var deviceFile in localFileList) { // if (tempStrings [1].ToString () != DeviceType.RCU.ToString ()) { // if (deviceFile == gatewayFileName // || deviceFile.Split ('_') [0] != "Equipment" // || deviceFile.Split ('_').Length != 4) { // continue; // } // } else { // if (deviceFile.Split ('_') [0] != "Equipment" || deviceFile.Split ('_').Length != 4) { // continue; // } // } // if (offlineDeviceList.Contains (deviceFile)) // continue; // if (deviceFile.Split ('_') [2] != tempStrings [2]) { // continue; // } // string localFileType = deviceFile.Split ('_') [1]; // byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (deviceFile); // string equipmentString; // Common common = null; // equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes); // common = Newtonsoft.Json.JsonConvert.DeserializeObject (equipmentString); // if (common == null) { // continue; // } // if (common.isMixBox) { // hideListCommon.Add (common); // } else { // RowLayout frameLayout = new RowLayout () { // Height = Application.GetRealHeight (93), // }; // frameLayout.Y = count++ * frameLayout.Height; // busEquipmentBody.AddChidren (frameLayout); // Button btnDelFile = new Button () { // TextID = R.MyInternationalizationString.Del, // BackgroundColor = SkinStyle.Current.DelColor // }; // btnDelFile.MouseUpEventHandler += (sender, e) => { // Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.TipDeleteEquipmentMessage) // , Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); // alert.Show (); // alert.ResultEventHandler += ( sender1, e1) => { // if (e1) { // //"_" + deviceFile.Split ('_') [1] + // string delFlag = "_" + deviceFile.Split ('_') [2] + "_" + deviceFile.Split ('_') [3]; // var delFile = IO.FileUtils.ReadFiles ().FindAll ((w) => { // return w.Contains (delFlag); // }); // for (int i = 0; i < delFile.Count; i++) { // IO.FileUtils.DeleteFile (delFile [i]); // } // ShowEquipmentBase (); // } // }; // }; // frameLayout.AddRightView (btnDelFile); // busEquipmentBody.Height += Application.GetRealHeight (93); // equipmentHeight += Application.GetRealHeight (93); // busEquipmentBody.Tag = equipmentHeight; // Button pointButton = new Button () { // Width = Application.GetRealHeight (13), // Height = Application.GetRealHeight (13), // X = Application.GetRealWidth (80), // UnSelectedImagePath = "Item/Point.png", // SelectedImagePath = "Item/PointSelected.png", // Gravity = Gravity.CenterVertical, // }; // frameLayout.AddChidren (pointButton); // Button btnName = new Button () { // Width = Application.GetRealWidth (642), // Height = LayoutParams.MatchParent, // Text = common.Name, // TextAlignment = TextAlignment.CenterLeft, // X = pointButton.Right + Application.GetRealWidth (20), // TextColor = SkinStyle.Current.TextColor1 // }; // frameLayout.AddChidren (btnName); // Button btnRight = 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", // }; // frameLayout.AddChidren (btnRight); // EventHandler mouseEvent = (sender, e) => { // }; // btnRight.MouseUpEventHandler += mouseEvent; // btnName.MouseUpEventHandler += mouseEvent; // frameLayout.MouseUpEventHandler += mouseEvent; // } // } // } // } // if (offlineDeviceList.Count != 0) { // #region titel // FrameLayout OnePortBusFrameLayout = new FrameLayout () { // Height = Application.GetRealHeight (98), // BackgroundColor = SkinStyle.Current.MainColor // }; // VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout); // Button btnLineTop = new Button () { // Height = 1, // BackgroundColor = 0xFF2f2f2f, // }; // VerticalScrolViewMiddle.AddChidren (btnLineTop); // FrameLayout busEquipmentBody = new FrameLayout () { // Height = 0, // Tag = 0, // }; // VerticalScrolViewMiddle.AddChidren (busEquipmentBody); // Button button1 = new Button () { // X = Application.GetRealWidth (20), // 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 = Application.GetRealWidth (20) + button1.Right, // Height = Application.GetRealHeight (41), // Width = Application.GetRealWidth (400), // Gravity = Gravity.CenterVertical, // TextAlignment = TextAlignment.CenterLeft, // TextID = R.MyInternationalizationString.OfflineDevice, // TextColor = SkinStyle.Current.TextColor1 // }; // OnePortBusFrameLayout.AddChidren (textButton1); // Button downSelectedButton1 = new Button () { // X = Application.GetRealWidth (550), // Height = Application.GetRealHeight (46), // Width = Application.GetRealWidth (47), // UnSelectedImagePath = "Item/Down.png", // SelectedImagePath = "Item/DownSelected.png", // Gravity = Gravity.CenterVertical, // IsSelected = true, // }; // OnePortBusFrameLayout.AddChidren (downSelectedButton1); // EventHandler eHandler = (sender, e) => { // downSelectedButton1.IsSelected = !downSelectedButton1.IsSelected; // if (downSelectedButton1.IsSelected) { // busEquipmentBody.Height = Convert.ToInt32 (busEquipmentBody.Tag); // } else { // busEquipmentBody.Height = 0; // } // }; // downSelectedButton1.MouseUpEventHandler += eHandler; // button1.MouseUpEventHandler += eHandler; // textButton1.MouseUpEventHandler += eHandler; // #endregion // int count = 0; // int equipmentHeight = 0; // foreach (var offlineDevice in offlineDeviceList) { // string localFileType = offlineDevice.Split ('_') [1]; // byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (offlineDevice); // string equipmentString; // Common common = null; // //设备界面要显示的设备,必须在这里添加显示 // equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes); // common = Newtonsoft.Json.JsonConvert.DeserializeObject (equipmentString); // if (common == null) { // continue; // } // if (common.isMixBox) { // hideListCommon.Add (common); // } else { // RowLayout frameLayout = new RowLayout () { // Height = Application.GetRealHeight (93), // }; // frameLayout.Y = count++ * frameLayout.Height; // busEquipmentBody.AddChidren (frameLayout); // Button btnDelFile = new Button () { // TextID = R.MyInternationalizationString.Del, // BackgroundColor = SkinStyle.Current.DelColor // }; // btnDelFile.MouseUpEventHandler += (sender, e) => { // Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.TipDeleteEquipmentMessage) // , Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); // alert.Show (); // alert.ResultEventHandler += ( sender1, e1) => { // if (e1) { // IO.FileUtils.DeleteFile (offlineDevice); // ShowEquipmentBase (); // } // }; // }; // frameLayout.AddRightView (btnDelFile); // busEquipmentBody.Height += Application.GetRealHeight (93); // equipmentHeight += Application.GetRealHeight (93); // busEquipmentBody.Tag = equipmentHeight; // Button pointButton = new Button () { // Width = Application.GetRealHeight (13), // Height = Application.GetRealHeight (13), // X = Application.GetRealWidth (80), // UnSelectedImagePath = "Item/Point.png", // SelectedImagePath = "Item/PointSelected.png", // Gravity = Gravity.CenterVertical, // }; // frameLayout.AddChidren (pointButton); // Button btnName = new Button () { // Width = Application.GetRealWidth (642), // Height = LayoutParams.MatchParent, // Text = common.Name, // TextAlignment = TextAlignment.CenterLeft, // X = pointButton.Right + Application.GetRealWidth (20), // TextColor = SkinStyle.Current.TextColor1 // }; // frameLayout.AddChidren (btnName); // } // } // } // } //} }