示例#1
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public CyclogramFile()
 {
     // !_curLine = 0;
     _wasError = false;
     _availableCommands = null;
     _curCommand = new CyclogramLine();
     commands = new ObservableCollection<CyclogramLine>();
 }
示例#2
0
 public XsanCyclogramCommands()
 {
     CycCommandsAvailable = new CyclogramCommands();
     CycCommandsAvailable.AddCommand("IMIT_XSAN", new CyclogramLine("IMIT_XSAN", XsanControlTest, XsanControlExec, String.Empty));
     CycCommandsAvailable.AddCommand("IMIT_BUNI", new CyclogramLine("IMIT_BUNI", BuniControlTest, BuniControlExec, String.Empty));
     CycCommandsAvailable.AddCommand("UKS", new CyclogramLine("UKS", UksTest, UksExec, String.Empty));
     CycCommandsAvailable.AddCommand("POWER", new CyclogramLine("POWER", PowerTest, PowerExec, String.Empty));
     CycCommandsAvailable.AddCommand("WRITE_XSAN_DATA", new CyclogramLine("WRITE_XSAN_DATA", WriteXsanDataTest, WriteXsanDataExec, String.Empty));
 }
示例#3
0
        /// <summary>
        /// загружаем файл циклограмм
        /// Даже в случае ошибки, команда добавляется в список команд, но выставляется признак наличия ошибки
        /// </summary>
        /// <param name="cycFName">Путь к файлу циклограмм</param>
        /// <param name="availableCommands">Список доступных команд</param>
        public void TryLoad(string cycFName, CyclogramCommands availableCommands)
        {
            Debug.Assert(availableCommands != null, "Список доступных команд циклограммы пуст!");
            string cycLine;
            int curLineNum = 0;

            _availableCommands = availableCommands;
            _wasError = false;
            if (!File.Exists(cycFName))
            {
                _wasError = true;
                CyclogramParsingException exc = new CyclogramParsingException("Файл " + cycFName + " не существует!");
                throw exc;
            }

            FileName = cycFName;
            commands.Clear();
            using (StreamReader sr = new StreamReader(cycFName))
            {
                // читам файл по строкам
                while (sr.Peek() >= 0)
                {
                    cycLine = sr.ReadLine();
                    try
                    {
                        TryParseString(cycLine);
                    }
                    catch (CyclogramParsingException e)
                    {
                        _wasError = true;
                        _curCommand.ErrorInCommand += e.Message + "\t";
                    }
                    catch
                    {
                        _wasError = true;
                        _curCommand.ErrorInCommand += " Общая ошибка проверки команды.";
                    }
                    finally
                    {
                        _curCommand.Line = curLineNum;
                        commands.Add(_curCommand);

                        // начинаем "собирать" новую команду
                        _curCommand = new CyclogramLine();
                    }
                    curLineNum++;
                }
            }
        }
 /// <summary>
 /// Функция добавляет список команд циклограммы к исходным командам
 /// </summary>
 /// <param name="cycCommands"></param>
 public void AddCycCommands(CyclogramCommands cycCommands)
 {
     foreach (KeyValuePair<string, CyclogramLine> cycLine in cycCommands) {
         _cycCommandsAvailable.AddCommand(cycLine.Key, cycLine.Value);
     }
 }
 /// <summary>
 /// Загружаем циклограмму
 /// В случае ошмибки загрузки циклограммы, генерируем исключение
 /// </summary>
 /// <param name="fName">Путь к файлу циклограмм</param>
 /// <param name="availableCommands">Список доступных команд</param>
 public void Load(string fName, CyclogramCommands availableCommands)
 {
     try
     {
         CycFile.TryLoad(fName, availableCommands);
         if (CycFile.WasError)
         {
             CyclogramParsingException exc = new CyclogramParsingException("Ошибки в циклограмме");
             throw exc;
         }
         else
         {
             ChangeState(CurState.csLoaded);
             CycFile.CalcAbsoluteTime();
             _cPos.SetToLine(0, true);
         }
     }
     catch
     {
         ChangeState(CurState.csLoadedWithErrors);
         // throw;
     }
 }