예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }