/// <summary> /// Возвращает описание модуля ВВ; тип модуля определяется по имени переменной /// </summary> /// <param name="VarName">Имя переменной модуля ВВ</param> public static IOModule Create(string VarName) { Match m = Regex.Match(VarName, @"^([A-Z]+)(\d+)$"); IOModule res = null; int index = 0; if (!int.TryParse(m.Groups[2].Value, out index)) { throw new Exception("Неверное имя переменной: " + VarName + " не является корректным именем переменной модуля ввода-вывода"); } string prefix = m.Groups[1].Value; if (prefix == "IN") { res = DINModule.Create(index); } else if (prefix == "OUT") { res = DOUTModule.Create(index); } else if (prefix == "ADC" || prefix == "ADH") { res = ADCModule.Create(index); } else if (prefix == "DAC" || prefix == "DAH") { res = DACModule.Create(index); } else { throw new Exception("Неверное имя переменной: " + VarName + " не является корректным именем переменной модуля ввода-вывода"); } return(res); }
/// <summary> /// Возвращает описание модуля ВВ; тип модуля определяется по имени переменной /// </summary> /// <param name="VarName">Имя переменной модуля ВВ</param> public static IOModule Create(int ModuleNumber) { IOModule res = null; if (ModuleNumber >= DINModule.MinModuleNumber && ModuleNumber <= DINModule.MaxModuleNumber) { res = new DINModule(ModuleNumber); } else if (ModuleNumber >= DOUTModule.MinModuleNumber && ModuleNumber <= DOUTModule.MaxModuleNumber) { res = new DOUTModule(ModuleNumber); } else if (ModuleNumber >= ADCModule.MinModuleNumber && ModuleNumber <= ADCModule.MaxModuleNumber) { res = new ADCModule(ModuleNumber); } else if (ModuleNumber >= DACModule.MinModuleNumber && ModuleNumber <= DACModule.MaxModuleNumber) { res = new DACModule(ModuleNumber); } else { throw new Exception("Неверный номер модуля ввода-вывода"); } return(res); }
/// <summary> /// Создает модуль по указанному номеру переменной /// </summary> public DOUTModule(int index) public static new DOUTModule Create(int index) { if (index < DOUTModule.MinIndex || index > DOUTModule.MaxIndex) { throw new Exception("Невеный индекс переменной. Допускаются переменные из диапазона OUT0 - OUT" + DOUTModule.MaxIndex); } DOUTModule res = new DOUTModule(); res.Init(res.ComputeModuleNumber(index)); return(res); }