/// <summary> /// Создание новой пустой конфигурации /// </summary> public Parser() { _listProductionThreads = new Collection <ProductionThread>(); MillConfigUnit = new MillConfigUnit(); SubscriptionsUnit = new SubscriptionsUnit(); ListDataBlockUnits = new Collection <DataBlockUnit>(); ListSignalUnits = new Collection <SignalUnit>(); ListThreadUnits = new Collection <ThreadUnit>(); ListRollgangUnits = new Collection <RollgangUnit>(); ListLabelUnits = new Collection <LabelUnit>(); ListSensorUnits = new Collection <SensorUnit>(); ListStopperUnits = new Collection <StopperUnit>(); ListLinearDisplacementUnits = new Collection <LinearDisplacementUnit>(); ListDeleterUnits = new Collection <DeleterUnit>(); ListCagesUnits = new Collection <CageUnit>(); ListIngotParametersUnits = new Collection <IngotParametersUnit>(); ListConnectionStringUnits = new Collection <ConnectionStringUnit>(); ListAggregateUnits = new Collection <AggregateUnit>(); ListTechnicalUnits = new Collection <TechnicalUnit>(); }
/// <summary> /// Разбор конфигурационного файла на объекты /// </summary> /// <exception cref="NullReferenceException">Неверный формат конфигурационного файла</exception> public void Parse() { if (String.IsNullOrEmpty(_cfgFileName)) { return; } List <ConfigurationUnit> objectsList = new List <ConfigurationUnit>(); Stack <ConfigurationUnit> subobjects = new Stack <ConfigurationUnit>(); bool openedMainObject = false; int subObjectsCount = 0; bool closedSubObject = true; string line; ConfigurationUnit currConfigurationUnit = null; // Открываем файл конфигурации для чтения и читаем его построчно StreamReader reader = new StreamReader(_cfgFileName, System.Text.Encoding.Default); while ((line = reader.ReadLine()) != null) { line = line.Replace("\t", " ").Trim(); if (line == "" || line.StartsWith("//") || line == "(") { continue; } if (line.Contains("=") && currConfigurationUnit != null) { // Разбираем параметры объекта по первому вхождению символа '=' int separator = line.IndexOf('='); string key = line.Substring(0, separator); string val = line.Substring(separator + 1); currConfigurationUnit.Parameters[key] = val; } else { // Определяем тип операции с объектом if (line == ")") { if (openedMainObject) { // Закрывем объект if (subObjectsCount > 0) { // Закрываем подобъект if (subObjectsCount > 1) { // Забираем очередной подобъект из стека ConfigurationUnit topLevel = subobjects.Pop(); topLevel.SubObjects.Add(currConfigurationUnit); currConfigurationUnit = topLevel; subObjectsCount--; } else { // В стеке нет подобъектов, последний подобъект в переменной currObject ConfigurationUnit topLevel = objectsList[objectsList.Count - 1]; objectsList.Remove(topLevel); topLevel.SubObjects.Add(currConfigurationUnit); currConfigurationUnit = topLevel; subObjectsCount--; closedSubObject = true; } } else { // Закрываем главный объект if (!closedSubObject) { ConfigurationUnit sub = subobjects.Pop(); currConfigurationUnit?.SubObjects.Add(sub); closedSubObject = true; } objectsList.Add(currConfigurationUnit); currConfigurationUnit = null; openedMainObject = false; } } else { // Нет созданных объектов throw new NullReferenceException("Ошибка при разборе конфигурационного файла"); } } else { // Открываем объект if (openedMainObject) { if (subObjectsCount == 0) { // Это главный объект, и подобъектов пока нет // Сохраняем главный объект и создаем подобъект objectsList.Add(currConfigurationUnit); currConfigurationUnit = new ConfigurationUnit(); ConfigurationUnitType type = GetObjectType(line); currConfigurationUnit.Name = line; currConfigurationUnit.Type = type; closedSubObject = false; subObjectsCount++; } else { // Это подобъект, сохроаняем его в стеке и создаем новый подобъект subobjects.Push(currConfigurationUnit); currConfigurationUnit = new ConfigurationUnit(); ConfigurationUnitType type = GetObjectType(line); currConfigurationUnit.Name = line; currConfigurationUnit.Type = type; subObjectsCount++; closedSubObject = false; } } else { // Это главный объект currConfigurationUnit = new ConfigurationUnit(); ConfigurationUnitType type = GetObjectType(line); currConfigurationUnit.Name = line; currConfigurationUnit.Type = type; openedMainObject = true; } } } } reader.Close(); foreach (ConfigurationUnit item in objectsList) { switch (item.Type) { case ConfigurationUnitType.MillConfig: MillConfigUnit = new MillConfigUnit(item); break; case ConfigurationUnitType.Subscription: SubscriptionsUnit = new SubscriptionsUnit(item); break; case ConfigurationUnitType.DataBlock: ListDataBlockUnits.Add(new DataBlockUnit(item)); break; case ConfigurationUnitType.Signal: ListSignalUnits.Add(new SignalUnit(item)); break; case ConfigurationUnitType.Thread: ListThreadUnits.Add(new ThreadUnit(item)); break; case ConfigurationUnitType.Rollgang: ListRollgangUnits.Add(new RollgangUnit(item)); break; case ConfigurationUnitType.Label: ListLabelUnits.Add(new LabelUnit(item)); break; case ConfigurationUnitType.Sensor: ListSensorUnits.Add(new SensorUnit(item)); break; case ConfigurationUnitType.Stopper: ListStopperUnits.Add(new StopperUnit(item)); break; case ConfigurationUnitType.LinearMoving: ListLinearDisplacementUnits.Add(new LinearDisplacementUnit(item)); break; case ConfigurationUnitType.Deleter: ListDeleterUnits.Add(new DeleterUnit(item)); break; case ConfigurationUnitType.Cage: ListCagesUnits.Add(new CageUnit(item)); break; case ConfigurationUnitType.IngotParams: ListIngotParametersUnits.Add(new IngotParametersUnit(item)); break; case ConfigurationUnitType.Connection: ListConnectionStringUnits.Add(new ConnectionStringUnit(item)); break; case ConfigurationUnitType.Aggregate: ListAggregateUnits.Add(new AggregateUnit(item)); break; case ConfigurationUnitType.TechnicalUnit: ListTechnicalUnits.Add(new TechnicalUnit(item)); break; } } }
private void button2_Click(object sender, EventArgs e) { MillConfig = null; Result = DialogResult.Cancel; }
private void UpdateMillConfigView() { List <DataViews> dataViews = new List <DataViews>(); MillConfigUnit item = _configuration.MillConfigUnit; DataViews dataView = new DataViews(); dataView.ParameterName = "Наименование"; dataView.ParameterValue = item.Name; dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Комментарий"; dataView.ParameterValue = item.Comment; dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Файл архивов"; dataView.ParameterValue = item.ArchiveFile; dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Адрес сервера архивов"; dataView.ParameterValue = item.ArchiveHost; dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Порт сервера архивов"; dataView.ParameterValue = item.ArchivePort.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Адрес севрера визуализации"; dataView.ParameterValue = item.VisualHost; dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Порт сервера визуализации"; dataView.ParameterValue = item.VisualPort.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Размер буффера"; dataView.ParameterValue = item.BufferSize.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Максимальный размер файла"; dataView.ParameterValue = item.MaxFileSize.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Окрестность за клетью"; dataView.ParameterValue = item.CageNeighborhood.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Окресность датчика голова"; dataView.ParameterValue = item.HeadNeighborhood.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Окрестность датчика хвост"; dataView.ParameterValue = item.TailNeighborhood.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Максимальное количество единиц"; dataView.ParameterValue = item.MaxUnitsCount.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Ускорение объекта"; dataView.ParameterValue = item.ObjectAcceleration.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Максимальная скорость объекта"; dataView.ParameterValue = item.MaxObjectSpeed.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Период накопления данных"; dataView.ParameterValue = item.PeriodAccumulation.ToString(); dataViews.Add(dataView); dataView = new DataViews(); dataView.ParameterName = "Период записи данных"; dataView.ParameterValue = item.PeriodRecording.ToString(); dataViews.Add(dataView); dataMillConfig.DataSource = dataViews; dataMillConfig.Columns[0].HeaderText = "Параметр"; dataMillConfig.Columns[0].Width = 150; dataMillConfig.Columns[1].HeaderText = "Значение"; dataMillConfig.Columns[1].Width = 200; }
public EditMillConfig() { InitializeComponent(); MillConfig = new MillConfigUnit(); }