Beispiel #1
0
        /// <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;
 }
Beispiel #4
0
        /// <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;
            }
        }