/// <summary> /// Чтение модулей ввода-вывода /// </summary> /// <param name="isContainsNodes">Прочитаны или нет узлы</param> private void ReadModules(bool isContainsNodes) { foreach (var function in functionsForSearching) { bool needSkipModule = NeedSkipModule(function); if (needSkipModule == true) { continue; } var match = IONameRegex.Match(function.VisibleName); int moduleNumber = Convert.ToInt32(match.Groups["n"].Value); int shortModuleNumber = moduleNumber % 100; int shortNodeNumber; if (isContainsA1 == true) { shortNodeNumber = moduleNumber / 100; } else { shortNodeNumber = moduleNumber / 100 - numberA1; } string type = GetModuleTypeFromFunction(function); IO.IONode node = IOManager[shortNodeNumber]; if (IOManager[shortNodeNumber] != null) { IO.IOModuleInfo moduleInfo = GetIOModuleInfo(function, type); int inOffset; int outOffset; GetInAndOutOffset(shortNodeNumber, moduleInfo, out inOffset, out outOffset); IO.IOModule nodeModule = new IO.IOModule(inOffset, outOffset, moduleInfo, moduleNumber, function); node.DI_count += moduleInfo.DI_count; node.DO_count += moduleInfo.DO_count; node.AI_count += moduleInfo.AI_count; node.AO_count += moduleInfo.AO_count; node.SetModule(nodeModule, shortModuleNumber); } else { ProjectManager.GetInstance().AddLogMessage($"Для" + $" \"{function.VisibleName}\" - \"{type}\", " + $"не найден узел номер {++shortNodeNumber}."); } } }
/// <summary> /// Чтение модулей ввода-вывода /// </summary> /// <param name="isContainsNodes">Прочитаны или нет узлы</param> private void ReadModules(bool isContainsNodes) { foreach (var function in functionsForSearching) { bool needSkipModule = NeedSkipModule(function); if (needSkipModule == true) { continue; } var match = IONameRegex.Match(function.VisibleName); int moduleNumber = Convert.ToInt32(match.Groups["n"].Value); int shortModuleNumber = moduleNumber % 100; int shortNodeNumber; if (isContainsA1 == true) { shortNodeNumber = moduleNumber / 100; } else { shortNodeNumber = moduleNumber / 100 - numberA1; } string type = GetModuleTypeFromFunction(function); IO.IONode node = IOManager[shortNodeNumber]; if (IOManager[shortNodeNumber] != null) { IO.IOModuleInfo moduleInfo = GetIOModuleInfo(function, type); int inOffset; int outOffset; GetInAndOutOffset(shortNodeNumber, moduleInfo, out inOffset, out outOffset); IO.IOModule nodeModule = new IO.IOModule(inOffset, outOffset, moduleInfo, moduleNumber, function); node.DI_count += moduleInfo.DICount; node.DO_count += moduleInfo.DOCount; node.AI_count += moduleInfo.AICount; node.AO_count += moduleInfo.AOCount; bool moduleNotExist = node[shortModuleNumber - 1] == null; if (moduleNotExist) { node.SetModule(nodeModule, shortModuleNumber); } else { Logs.AddMessage($"Главная функция модуля " + $"ввода-вывода \'{function.VisibleName}\' " + $"определяется дважды, проверьте расстановку " + $"главных функций на модулях. "); } } else { Logs.AddMessage($"Для" + $" \"{function.VisibleName}\" - \"{type}\", " + $"не найден узел номер {++shortNodeNumber}."); } } }