Exemple #1
0
        /// <summary>
        /// Loads the configuration from the specified reader.
        /// </summary>
        protected override void Load(TextReader reader)
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(reader);
            XmlElement rootElem = xmlDoc.DocumentElement;

            if (rootElem.SelectSingleNode("GeneralOptions") is XmlNode generalOptionsNode)
            {
                GeneralOptions.LoadFromXml(generalOptionsNode);
            }

            if (rootElem.SelectSingleNode("ListenerOptions") is XmlNode listenerOptionsNode)
            {
                ListenerOptions.LoadFromXml(listenerOptionsNode);
            }

            HashSet <string> moduleCodeSet = new HashSet <string>();

            void AddModuleCode(string moduleCode)
            {
                if (!string.IsNullOrEmpty(moduleCode) && moduleCodeSet.Add(moduleCode.ToLowerInvariant()))
                {
                    ModuleCodes.Add(moduleCode);
                }
            }

            if (rootElem.SelectSingleNode("Modules") is XmlNode modulesNode)
            {
                foreach (XmlElement moduleElem in modulesNode.SelectNodes("Module"))
                {
                    string moduleCode = ScadaUtils.RemoveFileNameSuffixes(moduleElem.GetAttribute("code"));
                    AddModuleCode(moduleCode);
                }
            }

            if (rootElem.SelectSingleNode("Archives") is XmlNode archivesNode)
            {
                foreach (XmlElement archiveElem in archivesNode.SelectNodes("Archive"))
                {
                    ArchiveConfig archiveConfig = new ArchiveConfig();
                    archiveConfig.LoadFromXml(archiveElem);
                    Archives.Add(archiveConfig);

                    if (archiveConfig.Active)
                    {
                        AddModuleCode(archiveConfig.Module);
                    }
                }
            }
        }
Exemple #2
0
        private int RetrieveValueBasedOnMode(ModuleCodes mc, int[] opCodeSeq, int index)
        {
            switch (mc)
            {
            case ModuleCodes.immediateMode:
                return(index);

            case ModuleCodes.positionMode:
                return(opCodeSeq[index]);

            default:
                return(0);
            }
        }