/// <summary> /// Обновляет значения компонентов, задающих параметры связи с контроллером /// </summary> public void UpdateControlerParameters() { /////////// LoadValues(this.engine.Parameters); /////////// ProcessorType p = ProcessorType.STM32F107; this.DebuggerEngine.Parameters.ProcessorType = p; ControllerProgramSolution sln = ControllerProgramSolution.Create(p); //this.rbInverse.Checked = sln.ProcessorParams.InverseByteOrder; Program.Settings.DeBugger_SettingsProcessesorType = p.ToString(); this.RaiseProcessorChangedEvent(p); //this.ddlProcessorType.SelectedItem = this.engine.Parameters.ProcessorType; this.ddlPortName.SelectedItem = this.engine.Parameters.PortName; this.nudControllerAddress.Value = this.engine.Parameters.ControllerNumber; this.ddlBaudRate.SelectedItem = this.engine.Parameters.BaudRate.ToString(); this.ddlProtocol.SelectedItem = this.engine.Parameters.ProtocolType; //this.tbReadPassword.Text = this.engine.Parameters.ReadPassword; //this.tbWritePassword.Text = this.engine.Parameters.WritePassword; //this.nudPort.Value = this.engine.Parameters.PortNumber; this.tBIP.Text = this.engine.Parameters.PortIP; rbCom.Checked = this.engine.Parameters.ComConection; }
private bool _IsReading = false; //Происходит ли опрос(видна ли вкладака) /// <summary> /// Конструктор /// </summary> /// <param name="solution"></param> public ViewSituationsTabbedDocument(ControllerProgramSolution solution, DebuggerEngine engine) : base(solution, engine) { InitializeComponent(); _engine = engine; _solution = solution; if (_solution == null) { _solution = ControllerProgramSolution.Create(_engine.Parameters.ProcessorType); } }
/// <summary> /// Конструктор /// </summary> /// <param name="solution"></param> public ViewVarsTabbedDocument(ControllerProgramSolution solution, DebuggerEngine engine) : base(solution, engine) { InitializeComponent(); _engine = engine; _solution = solution; if (_solution == null) { _solution = ControllerProgramSolution.Create(_engine.Parameters.ProcessorType); _EmptyProgect = true; } else { _EmptyProgect = false; } for (int i = 0; i < _RemovedVars.Length; i++) { _RemovedVars[i] = new List <ControllerVar>(); } RebuildTree(); this.dgVars.Columns[1].ReadOnly = false; }
/// <summary> /// Загрузка новых параметров /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void Update(ControllerProgramSolution solution, DebuggerEngine engine) { _engine = engine; if (solution != null) { _solution = solution; } else { _solution = ControllerProgramSolution.Create(_engine.Parameters.ProcessorType); } //Очистка значений переменных this.StructsTable.Rows.Clear(); this.VarsTable.Rows.Clear(); this.DisplayVarsTable.Rows.Clear(); this._freeStructs = new List <ControllerStructVar>(); this.clb_structurs.Items.Clear(); FillStuctursTables(); //Добваление структур, которых нет в проекте ControllerStructVar m_struct; ControllerUserVar m_var; foreach (DebuggerParameters.StructDescription sd in _engine.Parameters.ReadingStructs) { bool m_fined = false; foreach (DataRow dr in this.StructsTable.Rows) { if (dr[0].ToString() == sd.Name) { m_fined = true; break; } } if (m_fined) { continue; } m_struct = new ControllerStructVar(); m_struct.Address = sd.Address; m_struct.HasSign = sd.HasSign; m_struct.Memory = sd.MemoryType; m_struct.Name = sd.Name; m_struct.Size = sd.Size; foreach (DebuggerParameters.VarDescription vd in sd.Vars) { m_var = new ControllerUserVar(); m_var.Address = vd.Address; m_var.HasSign = vd.HasSign; m_var.Array = false; m_var.Memory = vd.MemoryType; m_var.Name = vd.Name; m_var.Size = vd.Size; m_struct.Vars.Add(m_var); } AddStructurToTable(m_struct); } FillCheckedList(); //Выбор структур для опроса List <DebuggerParameters.StructDescription> readStructs = new List <DebuggerParameters.StructDescription>(_engine.Parameters.ReadingStructs); _engine.Parameters.ReadingStructs = new List <DebuggerParameters.StructDescription>(); for (int i = 0; i < this.clb_structurs.Items.Count; i++) { foreach (DebuggerParameters.StructDescription sd in readStructs) { if (this.clb_structurs.Items[i].ToString() == sd.Name) { //this.clb_structurs_ItemCheck(this.clb_structurs, new ItemCheckEventArgs(i, System.Windows.Forms.CheckState.Checked, System.Windows.Forms.CheckState.Unchecked)); this.clb_structurs.SetItemCheckState(i, CheckState.Checked); } } } }
/// <summary> /// Загружает настройки проекта из указанного файла пультов /// </summary> //private void LoadParamsToSolutionFromPult(ControllerProgramSolution solution, string FileName) //{ // PultFileVersion version = RelkonPultModel.GetPultFileVersion(FileName); // switch (version) // { // case PultFileVersion.v37: // this.LoadParamsToSolutionFromPlt37(solution, FileName); // break; // } // solution.ComputeMultibyteEmbeddedVarsValues(); //} /// <summary> /// Загружает настройки в проект из fpr-файла /// </summary> //private void LoadParamsToSolutionFromFpr(AT89C51ED2Solution solution, string FileName) //{ // solution.Vars.EmbeddedVars.Clear(); // solution.Vars.EmbeddedVars.AddRange(RelkonPultModel.GetEmbeddedVarsFromFpr(FileName)); // using (StreamReader reader = new StreamReader(FileName, Encoding.Default)) // { // solution.BaudRate = int.Parse(reader.ReadLine()); //считывание скорости // solution.Protocol = reader.ReadLine() == "1" ? ProtocolType.RC51BIN : ProtocolType.RC51ASCII; // solution.ReadPassword = reader.ReadLine(); //пароль на чтение // solution.WritePassword = reader.ReadLine(); //пароль на запись // } //} /// <summary> /// Загружает настройки в проект из plt-файла версии 3.7 /// </summary> //private void LoadParamsToSolutionFromPlt37(ControllerProgramSolution solution, string FileName) //{ // solution.Vars.EmbeddedVars.Clear(); // solution.Vars.EmbeddedVars.AddRange(RelkonPultModel.GetEmbeddedVarsFromPlt37(FileName)); // if (File.ReadAllText(FileName).Contains("Fujitsu")) // this.LoadParamsToMB90F347SolutionFromPlt37((MB90F347Solution)solution, FileName); // else // this.LoadParamsToAT89C51ED2SolutionFromPlt37((AT89C51ED2Solution)solution, FileName); //} /// <summary> /// Загружает настройки в проект AT89C51ED2 из plt-файла версии 3.7 /// </summary> //private void LoadParamsToAT89C51ED2SolutionFromPlt37(AT89C51ED2Solution solution, string FileName) //{ // XPathDocument xpDoc = new XPathDocument(FileName); // XPathNavigator xpNav = ((IXPathNavigable)xpDoc).CreateNavigator(); // XPathNodeIterator xpList = xpNav.Select("/fpultProject"); // xpList.MoveNext(); // solution.ControllerAddress = int.Parse(xpList.Current.GetAttribute("number", "")); // solution.Protocol = (xpList.Current.GetAttribute("protocol", "") == "RC51BIN") ? ProtocolType.RC51BIN : ProtocolType.RC51ASCII; // solution.ReadPassword = xpList.Current.GetAttribute("readPass", ""); // solution.WritePassword = xpList.Current.GetAttribute("writePass", ""); // solution.BaudRate = int.Parse(xpList.Current.GetAttribute("speed", "")); //} /// <summary> /// Загружает настройки в проект MB90F347 из plt-файла версии 3.7 /// </summary> //private void LoadParamsToMB90F347SolutionFromPlt37(MB90F347Solution solution, string FileName) //{ // XPathDocument xpDoc = new XPathDocument(FileName); // XPathNavigator xpNav = ((IXPathNavigable)xpDoc).CreateNavigator(); // XPathNodeIterator xpList = xpNav.Select("/fpultProject"); // xpList.MoveNext(); // solution.ControllerAddress = int.Parse(xpList.Current.GetAttribute("number", "")); // XPathNodeIterator xpPortOptions = xpNav.Select("/fpultProject/portOptions"); // int index = 0; // while (xpPortOptions.MoveNext()) // { // if (int.Parse(xpPortOptions.Current.GetAttribute("index", "")) == 1) // continue; // solution.Uarts[index].ReadPassword = xpPortOptions.Current.GetAttribute("readPassword", ""); // solution.Uarts[index].WritePassword = xpPortOptions.Current.GetAttribute("writePassword", ""); // solution.Uarts[index].ParseParametersByte(byte.Parse(xpPortOptions.Current.GetAttribute("parameters", ""))); // int start = int.Parse(xpPortOptions.Current.GetAttribute("rxStart", "")); // int end = int.Parse(xpPortOptions.Current.GetAttribute("rxEnd", "")); // solution.Uarts[index].BufferSize = end - start + 1; // start = int.Parse(xpPortOptions.Current.GetAttribute("txStart", "")); // end = int.Parse(xpPortOptions.Current.GetAttribute("txEnd", "")); // solution.Uarts[index].BufferSize = end - start + 1; // index++; // } // XPathNodeIterator xpConnectionSettings = xpNav.Select("/fpultProject/connectionSettings"); // while (xpConnectionSettings.MoveNext()) // { // solution.SearchedControllerAddress = int.Parse(xpConnectionSettings.Current.GetAttribute("searchingControllerAddress", "")); // solution.DispatcherPhone1 = xpConnectionSettings.Current.GetAttribute("modemPhone1", ""); // solution.DispatcherPhone1 = xpConnectionSettings.Current.GetAttribute("modemPhone2", ""); // solution.DispatcherPhone1 = xpConnectionSettings.Current.GetAttribute("modemPhone3", ""); // solution.SmsPhone1 = xpConnectionSettings.Current.GetAttribute("smsPhone1", ""); // solution.SmsPhone1 = xpConnectionSettings.Current.GetAttribute("smsPhone2", ""); // solution.SmsPhone1 = xpConnectionSettings.Current.GetAttribute("smsPhone3", ""); // solution.ModemInitializationString = xpConnectionSettings.Current.GetAttribute("modemInitString", ""); // solution.DenyProgrammingThrowProtocol = bool.Parse(xpConnectionSettings.Current.GetAttribute("denyProgramming", "")); // } //} /// <summary> /// На основании указаных файла программы и файла пультов создает новый проект /// </summary> /// <param name="ProgramFileName">Имя файла программы</param> /// <param name="PultFileName">Имя файла пультов</param> /// <param name="DirectoryName">Имя каталога, в котором должен быть создан проект</param> /// <param name="CreateDirectoryForSolution"> /// Если true, то в каталоге DirectoryName будет создан каталог для проекта, /// причем имя каталога будет именем файла пультов /// </param> private ControllerProgramSolution CreateSolution(string ProgramFileName, string PultFileName, bool CreateDirectoryForSolution) { ControllerProgramSolution res = File.ReadAllText(ProgramFileName).Contains("f347") ? ControllerProgramSolution.Create(ProcessorType.MB90F347) : ControllerProgramSolution.Create(ProcessorType.AT89C51ED2); RelkonPultModel pult = RelkonPultModel.FromFile(PultFileName); if (Array.IndexOf(res.PultParams.AvailablePultTypes, pult.Type) == -1) { throw new Exception("Тип пульта файла " + Path.GetFileName(PultFileName) + " не совместим с типом процессора программы " + Path.GetFileName(ProgramFileName)); } string SolutionDirectoryName = Path.GetDirectoryName(this.tbProgramFileName.Text) + (CreateDirectoryForSolution ? "\\" + Path.GetFileNameWithoutExtension(PultFileName) : ""); if (CreateDirectoryForSolution && !Directory.Exists(SolutionDirectoryName)) { Directory.CreateDirectory(SolutionDirectoryName); } //this.LoadParamsToSolutionFromPult(res, PultFileName); string SolutionProgramFileName = SolutionDirectoryName + "\\" + Path.GetFileNameWithoutExtension(ProgramFileName) + ".kon"; string SolutionPultFileName = SolutionDirectoryName + "\\" + Path.GetFileNameWithoutExtension(PultFileName) + ".plt"; File.Copy(ProgramFileName, SolutionProgramFileName); // Удаление из файла строки с типом процессора string[] s = File.ReadAllLines(SolutionProgramFileName, Encoding.Default); if (s.Length > 1 && (s[1].Contains("f347") || s[1].ToLower().Contains("тип контроллера"))) { s[1] = ""; } File.WriteAllLines(SolutionProgramFileName, s, Encoding.Default); /////////////////////////////////////////////// pult.Save(SolutionPultFileName); res.ProgramFileName = SolutionProgramFileName; res.PultFileName = SolutionPultFileName; res.Files.Add(SolutionProgramFileName); res.Files.Add(SolutionPultFileName); res.OpenedFiles.Add(SolutionProgramFileName); res.OpenedFiles.Add(SolutionPultFileName); res.SaveAs(SolutionDirectoryName + "\\" + Path.GetFileNameWithoutExtension(ProgramFileName) + ".rp6"); return(res); }
/// <summary> /// Загрузка новых параметров /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public override void Update(ControllerProgramSolution solution, DebuggerEngine engine) { //очистка значений //_AddedVars.Clear(); //_RemovedVars[0].Clear(); //_RemovedVars[1].Clear(); //_RemovedVars[2].Clear(); //_RemovedVars[3].Clear(); //_solution = null; //_engine = null; //_vars.Clear(); //this.Table.Rows.Clear(); //RemoveNewVars(); if (_EmptyProgect) { this.Table.Rows.Clear(); _vars.Clear(); } _engine = engine; if (solution != null /* && _solution != solution*/) { if (_solution != solution) { _EmptyProgect = false; } _solution = solution; } else { RemoveNewVars(); _solution = ControllerProgramSolution.Create(_engine.Parameters.ProcessorType); } if (_solution != null) { Kontel.Relkon.DebuggerParameters.VarDescription[] m_Vars = this._engine.Parameters.ReadingVars.ToArray(); for (int i = 0; i < dgVars.Rows.Count;) { this.dgVars_CellMouseClick(null, new DataGridViewCellMouseEventArgs(0, 0, 0, 0, new MouseEventArgs(MouseButtons.Left, 2, 0, 0, 0))); this.dgVars_DoubleClick(null, new EventArgs()); } //Добавление в проект недостающийх переменных for (int j = 0; j < m_Vars.Length; j++) { //Надо проверить на наличие такой переменнйо в проекте if (_solution.Vars.GetVarByName(m_Vars[j].Name) == null || _solution.Vars.GetVarByName(m_Vars[j].Name).Address == 0) { if (_solution.Vars.GetSystemVar(m_Vars[j].Name) != null && _solution.Vars.GetSystemVar(m_Vars[j].Name).Address == 0) { _RemovedVars[0].Add(_solution.Vars.GetVarByName(m_Vars[j].Name)); _solution.Vars.SystemVars.Remove((Kontel.Relkon.Classes.ControllerSystemVar)_solution.Vars.GetVarByName(m_Vars[j].Name)); } if (_solution.Vars.GetEmbeddedVar(m_Vars[j].Name) != null && _solution.Vars.GetEmbeddedVar(m_Vars[j].Name).Address == 0) { _RemovedVars[1].Add(_solution.Vars.GetVarByName(m_Vars[j].Name)); _solution.Vars.EmbeddedVars.Remove((Kontel.Relkon.Classes.ControllerEmbeddedVar)_solution.Vars.GetVarByName(m_Vars[j].Name)); } if (_solution.Vars.GetIOVar(m_Vars[j].Name) != null && _solution.Vars.GetIOVar(m_Vars[j].Name).Address == 0) { _RemovedVars[2].Add(_solution.Vars.GetVarByName(m_Vars[j].Name)); _solution.Vars.IOVars.Remove((Kontel.Relkon.Classes.ControllerIOVar)_solution.Vars.GetVarByName(m_Vars[j].Name)); } if (_solution.Vars.GetUserVar(m_Vars[j].Name) != null && _solution.Vars.GetUserVar(m_Vars[j].Name).Address == 0) { _RemovedVars[3].Add(_solution.Vars.GetVarByName(m_Vars[j].Name)); _solution.Vars.UserVars.Remove((Kontel.Relkon.Classes.ControllerUserVar)_solution.Vars.GetVarByName(m_Vars[j].Name)); } switch (m_Vars[j].Type) { case 0: Kontel.Relkon.Classes.ControllerSystemVar m_var1 = new Kontel.Relkon.Classes.ControllerSystemVar(); m_var1.Address = m_Vars[j].Address; m_var1.HasSign = m_Vars[j].HasSign; m_var1.Memory = m_Vars[j].MemoryType; m_var1.Name = m_Vars[j].Name; m_var1.Size = m_Vars[j].Size; _solution.Vars.SystemVars.Add(m_var1); _AddedVars.Add((Kontel.Relkon.Classes.ControllerVar)m_var1); break; case 1: Kontel.Relkon.Classes.ControllerEmbeddedVar m_var2 = new Kontel.Relkon.Classes.ControllerEmbeddedVar(); m_var2.Address = m_Vars[j].Address; m_var2.HasSign = m_Vars[j].HasSign; m_var2.Memory = m_Vars[j].MemoryType; m_var2.Name = m_Vars[j].Name; m_var2.Size = m_Vars[j].Size; _solution.Vars.EmbeddedVars.Add(m_var2); _AddedVars.Add((Kontel.Relkon.Classes.ControllerVar)m_var2); break; case 2: Kontel.Relkon.Classes.ControllerIOVar m_var3 = new Kontel.Relkon.Classes.ControllerIOVar(); m_var3.Address = m_Vars[j].Address; m_var3.HasSign = m_Vars[j].HasSign; m_var3.Memory = m_Vars[j].MemoryType; m_var3.Name = m_Vars[j].Name; m_var3.Size = m_Vars[j].Size; _solution.Vars.IOVars.Add(m_var3); _AddedVars.Add((Kontel.Relkon.Classes.ControllerVar)m_var3); break; case 3: Kontel.Relkon.Classes.ControllerUserVar m_var4 = new Kontel.Relkon.Classes.ControllerUserVar(); m_var4.Address = m_Vars[j].Address; m_var4.HasSign = m_Vars[j].HasSign; m_var4.Memory = m_Vars[j].MemoryType; m_var4.Name = m_Vars[j].Name; m_var4.Size = m_Vars[j].Size; _solution.Vars.UserVars.Add(m_var4); _AddedVars.Add((Kontel.Relkon.Classes.ControllerVar)m_var4); break; default: break; } } } RebuildTree(); //Создание списка опрашиваемых переменных for (int j = 0; j < m_Vars.Length; j++) { bool m_IsFined = false; for (int k = 0; k < 4; k++) { for (int i = 0; i < this.tvVars.Nodes[k].Nodes.Count; i++) { if (this.tvVars.Nodes[k].Nodes[i].Text.CompareTo(m_Vars[j].Name) == 0) { try { this.tvVars_NodeMouseDoubleClick(null, new TreeNodeMouseClickEventArgs(this.tvVars.Nodes[k].Nodes[i], MouseButtons.Left, 2, 0, 0)); m_IsFined = true; } catch { } break; } } if (m_IsFined) { break; } } _engine.Parameters.ReadingVars.Remove(m_Vars[j]); for (int i = 0; i < _engine.Parameters.ReadingVars.Count; i++) { if (_engine.Parameters.ReadingVars[i].Name == m_Vars[j].Name) { m_Vars[j] = _engine.Parameters.ReadingVars[i]; } } if ((m_IsFined) && (!this._engine.Parameters.ReadingVars.Contains(m_Vars[j]))) { this._engine.Parameters.ReadingVars.Add(m_Vars[j]); } } _IsReading = true; } }