Esempio n. 1
0
 public AdvancedProjectModel() : base()
 {
     receiverSignals        = new DeviceSignalsInfo();
     sourceSignals          = new DeviceSignalsInfo();
     SharedFileAsStringList = new List <string>();
     pacDTO = new PacInfo();
 }
        /// <summary>
        /// Сохранение сигналов в нужном виде
        /// </summary>
        /// <param name="signals">Модель сигналов</param>
        /// <param name="prefix">Префикс</param>
        /// <param name="invertSignals">Инвертировать сигналы</param>
        /// <returns></returns>
        private string SaveSignals(DeviceSignalsInfo signals, string prefix,
                                   bool invertSignals)
        {
            var res = "";

            res += SaveDISignals(signals.DI, prefix, invertSignals);
            res += SaveDOSignals(signals.DO, prefix, invertSignals);
            res += SaveAISignals(signals.AI, prefix, invertSignals);
            res += SaveAOSignals(signals.AO, prefix, invertSignals);

            return(res);
        }
        /// <summary>
        /// Генерация remote_gateways по текущему проекту
        /// </summary>
        /// <param name="pacInfo">Данные о ПЛК сохраняемого проекта</param>
        /// <param name="projectName">Имя сохраняемого проекта</param>
        /// <param name="invertSignals">Инвертировать сигналы</param>
        /// <param name="signals">Сигналы модели</param>
        /// <returns></returns>
        private string SaveProjectRemoteGateWays(string projectName,
                                                 PacInfo pacInfo, DeviceSignalsInfo signals, bool invertSignals)
        {
            if (signals.Count <= 0)
            {
                return("");
            }

            const string prefix = "\t\t";
            var          res    = "";

            res += SavePACInfo(pacInfo, projectName, prefix);
            res += SaveSignals(signals, prefix, invertSignals);
            res += "\t},";

            res = res.Replace("\t", "    ");
            return(res);
        }
        /// <summary>
        /// Генерация shared_devices по проекту
        /// </summary>
        /// <param name="signals">Сигналы модели</param>
        /// <param name="projectName">Имя сохраняемого проекта</param>
        /// <param name="stationNum">Номер станции PAC</param>
        /// <param name="invertSignals">Инвертировать сигналы (DI<>DO, AI<>AO)
        /// </param>
        /// <returns></returns>
        private string SaveProjectSharedDevices(string projectName,
                                                int stationNum, DeviceSignalsInfo signals, bool invertSignals)
        {
            if (signals.Count <= 0)
            {
                return("");
            }

            const string prefix = "\t\t";
            var          res    = "";

            res += $"\t[{stationNum}] =\n\t{{\n";
            res += prefix + $"projectName = \"{projectName}\",\n";
            res += SaveSignals(signals, prefix, invertSignals);
            res += "\t},";

            res = res.Replace("\t", "    ");
            return(res);
        }
        /// <summary>
        /// Сохранение сигналов в нужном виде
        /// </summary>
        /// <param name="signals">Модель сигналов</param>
        /// <param name="prefix">Префикс</param>
        /// <param name="invertSignals">Инвертировать сигналы</param>
        /// <returns></returns>
        private string SaveSignals(DeviceSignalsInfo signals, string prefix,
                                   bool invertSignals)
        {
            var res         = "";
            var signalsList = new Dictionary <string, string>();

            SaveDISignals(ref signalsList, signals.DI, prefix, invertSignals);
            SaveDOSignals(ref signalsList, signals.DO, prefix, invertSignals);
            SaveAISignals(ref signalsList, signals.AI, prefix, invertSignals);
            SaveAOSignals(ref signalsList, signals.AO, prefix, invertSignals);

            var signalsKeys = signalsList.Keys.ToList();

            signalsKeys.Sort();
            foreach (var key in signalsKeys)
            {
                res += signalsList[key];
            }
            return(res);
        }