/// <summary> /// Считываетзначения переменных заводских установок из файла пультов версии 3.3 /// </summary> /// <param name="FileName">Имя файла пультов</param> //public static List<ControllerEmbeddedVar> GetEmbeddedVarsFromFpr(string FileName) //{ // ControllerVarCollection vars = new ControllerVarCollection(); // using (StreamReader reader = new StreamReader(FileName, Encoding.Default)) // { // for (int i = 0; i < 4; i++) // reader.ReadLine(); // AT89C51ED2Solution sln = new AT89C51ED2Solution(); // vars.EmbeddedVars.AddRange(sln.GetEmbeddedVarsList()); // int K = reader.ReadLine() == "1" ? 0 : 3; // K52 - 16 переменных, K51ED2 - 64; "1" - K51ED2 // for (int i = K; i < 4; i++) // { // string prefix = ((char)(((byte)'W') + i)).ToString(); // for (int j = 0; j < 16; j++) // { // string s = reader.ReadLine(); // vars.GetEmbeddedVar(prefix + j).Value = (s.Contains("h") || s.Contains("H")) ? AppliedMath.HexToDec(s) : int.Parse(s); // } // } // } // return vars.EmbeddedVars; //} /// <summary> /// Устанваливает специальные параметры пульта из файла пультов версии 3.3 /// </summary> /// <param name="FileName">Имя файла пультов</param> //public static List<ControllerEmbeddedVar> GetEmbeddedVarsFromPlt37(string FileName) //{ // ControllerVarCollection vars = new ControllerVarCollection(); // AT89C51ED2Solution sln = new AT89C51ED2Solution(); // создается только для получения списка переменных заводских установок; м.б. и MB90F347Solution, т.к. эти списки у них совпадают // vars.EmbeddedVars.AddRange(sln.GetEmbeddedVarsList()); // // XPathDocument xpDoc = new XPathDocument(FileName); // XPathNavigator xpNav = ((IXPathNavigable)xpDoc).CreateNavigator(); // XPathNodeIterator xpFactory = xpNav.Select("/fpultProject/factory"); // while (xpFactory.MoveNext()) // { // int idx = int.Parse(xpFactory.Current.GetAttribute("index", "")); // string prefix = ((char)(((byte)'W') + idx)).ToString(); // XPathNodeIterator xpValues = xpFactory.Current.SelectChildren("value", ""); // int i = 0; // while (xpValues.MoveNext()) // { // vars.GetEmbeddedVar(prefix + i++).Value = (xpValues.Current.Value.Contains("h") || xpValues.Current.Value.Contains("H")) ? AppliedMath.HexToDec(xpValues.Current.Value) : int.Parse(xpValues.Current.Value); // } // } // xpFactory = xpNav.Select("/fpultProject/EEVars"); // while (xpFactory.MoveNext()) // { // XPathNodeIterator xpValues = xpFactory.Current.SelectChildren("ee", ""); // int i = 0; // while (xpValues.MoveNext()) // { // vars.GetEmbeddedVar("EE" + i++).Value = (xpValues.Current.Value.Contains("h") || xpValues.Current.Value.Contains("H")) ? AppliedMath.HexToDec(xpValues.Current.Value) : int.Parse(xpValues.Current.Value); // } // } // return vars.EmbeddedVars; //} /// <summary> /// Заменяет в виде маску переменной заводских установок ее значением /// </summary> private static void ConvertViewTextForEmbeddedVars(View view, List <ControllerEmbeddedVar> EmbeddedVars) { ControllerVarCollection vars = new ControllerVarCollection(); vars.EmbeddedVars.AddRange(EmbeddedVars); foreach (PultVar var in view.Vars) { ControllerEmbeddedVar evar = vars.GetEmbeddedVar(var.Name); if (evar != null) { if (evar.Value.ToString().Length > var.Mask.Replace(".", "").Replace(",", "").Length) { return; } string evalue = evar.Value.ToString(); string mask = ""; for (int i = 0, j = 0; i < var.Mask.Length; i++, j++) { if (var.Mask[var.Mask.Length - i - 1] == '.' || var.Mask[var.Mask.Length - i - 1] == ',') { mask = var.Mask[var.Mask.Length - i - 1] + mask; j--; } else { mask = ((evalue.Length - j - 1 >= 0) ? evalue[evalue.Length - j - 1] : '0') + mask; } } mask = Utils.AddChars('0', mask, var.Mask.Length); var.Mask = mask; view.Text = view.Text.Remove(var.Position, var.Mask.Length).Insert(var.Position, var.Mask); } } }
/// <summary> /// ¬озвращает DataTable, который отображает указанную переменную /// </summary> private DataTable GetVarDataTable(ControllerEmbeddedVar var) { DataTable res = null; if (var.Name.Contains("i")) { res = this.tEEDoubleByte; } else if (var.Name.Contains("l")) { res = this.tEETetraByte; } else { res = this.tEESingleByte; } return(res); }
/// <summary> /// ¬озвращает позицию (строка, столбец) в DataTable, в которой /// выводитс¤ указанна¤ переменна¤ /// </summary> private Point GetVarTableLocation(ControllerEmbeddedVar var) { Point res = new Point(); if (var.Name[0] != 'E') { res.X = (byte)var.Name[0] - (byte)'W'; if (var.Name.Contains("i")) { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name) / 2 + 1; } else if (var.Name.Contains("l")) { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name) / 4 + 1; } else { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name) + 1; } } else { res.X = 0; if (var.Name.Contains("i")) { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name) / 2; } else if (var.Name.Contains("l")) { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name) / 4; } else { res.Y = this.solution.Vars.EmbeddedVars.GetEmbeddedVarIndex(var.Name); } } return(res); }