コード例 #1
0
ファイル: FrmDevTemplate.cs プロジェクト: LordLee123/scada
        /// <summary>
        /// Загрузить шаблон устройства из файла
        /// </summary>
        private void LoadTemplate(string fname)
        {
            template = uiCustomization.TemplateFactory.CreateDeviceTemplate();
            fileName = fname;
            SetFormTitle();
            string errMsg;

            if (!template.Load(fname, out errMsg))
            {
                ScadaUiUtils.ShowError(errMsg);
            }

            FillTree();
        }
コード例 #2
0
ファイル: FrmDevTemplate.cs プロジェクト: xxq860725/scada
        /// <summary>
        /// Загрузить шаблон устройства из файла
        /// </summary>
        private void LoadTemplate(string fname)
        {
            template = new DeviceTemplate();
            fileName = fname;
            SetFormTitle();
            string errMsg;

            if (!template.Load(fname, out errMsg))
            {
                ScadaUiUtils.ShowError(errMsg);
            }

            FillTree();
        }
コード例 #3
0
        /// <summary>
        /// Loads the device template from the specified file.
        /// </summary>
        private void LoadTemplate(string fileName)
        {
            template = customUi.CreateDeviceTemplate();

            if (!template.Load(fileName, out string errMsg))
            {
                ScadaUiUtils.ShowError(errMsg);
            }

            FileName = fileName;
            SetFormTitle();
            FillTree();
            Modified = false;
        }
コード例 #4
0
        /// <summary>
        /// Загрузить шаблон устройства из файла
        /// </summary>
        private void LoadTemplate(string fname)
        {
            DeviceTemplate templ = new DeviceTemplate();
            string         errMsg;

            if (templ.Load(fname, out errMsg))
            {
                template = templ;
                fileName = fname;
                SetFormTitle();
                FillTree();
            }
            else
            {
                ScadaUiUtils.ShowError(errMsg);
            }
        }
コード例 #5
0
        /// <summary>
        /// Loads a device template from the configuration file.
        /// </summary>
        protected DeviceTemplate LoadDeviceTemplate()
        {
            DeviceTemplate deviceTemplate = null;
            string         fileName       = DeviceConfig.PollingOptions.CmdLine.Trim();

            if (!string.IsNullOrEmpty(fileName))
            {
                deviceTemplate = customUi.CreateDeviceTemplate();

                if (!deviceTemplate.Load(Path.Combine(AppDirs.ConfigDir, fileName), out string errMsg))
                {
                    throw new ScadaException(errMsg);
                }
            }

            return(deviceTemplate);
        }
コード例 #6
0
        /// <summary>
        /// Gets existing or create a new device template.
        /// </summary>
        private void PrepareTemplate(string fileName)
        {
            deviceTemplate = null;

            if (string.IsNullOrEmpty(fileName))
            {
                WriteToLog(string.Format(Localization.UseRussian ?
                                         "{0} Ошибка: Не задан шаблон устройства для {1}" :
                                         "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption));
            }
            else
            {
                TemplateDict templateDict = GetTemplateDictionary();

                if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate))
                {
                    if (existingTemplate != null)
                    {
                        deviceTemplate = GetTemplateFactory().CreateDeviceTemplate();
                        deviceTemplate.CopyFrom(existingTemplate);
                    }
                }
                else
                {
                    DeviceTemplate newTemplate = GetTemplateFactory().CreateDeviceTemplate();
                    WriteToLog(string.Format(Localization.UseRussian ?
                                             "{0} Загрузка шаблона устройства из файла {1}" :
                                             "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName));
                    string filePath = Path.IsPathRooted(fileName) ?
                                      fileName : Path.Combine(AppDirs.ConfigDir, fileName);

                    if (newTemplate.Load(filePath, out string errMsg))
                    {
                        deviceTemplate = newTemplate;
                    }
                    else
                    {
                        WriteToLog(errMsg);
                    }

                    templateDict.Add(fileName, deviceTemplate);
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// Gets the device template from the shared dictionary.
        /// </summary>
        protected virtual DeviceTemplate GetDeviceTemplate()
        {
            DeviceTemplate deviceTemplate = null;
            string         fileName       = PollingOptions.CmdLine.Trim();

            if (string.IsNullOrEmpty(fileName))
            {
                Log.WriteLine(string.Format(Locale.IsRussian ?
                                            "Ошибка: Не задан шаблон устройства для {0}" :
                                            "Error: Device template is undefined for {0}", Title));
            }
            else
            {
                TemplateDict templateDict = GetTemplateDict();

                if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate))
                {
                    deviceTemplate = existingTemplate;
                }
                else
                {
                    Log.WriteLine(string.Format(Locale.IsRussian ?
                                                "Загрузка шаблона устройства из файла {0}" :
                                                "Load device template from file {0}", fileName));

                    DeviceTemplate newTemplate = CreateDeviceTemplate();
                    templateDict.Add(fileName, newTemplate);

                    if (newTemplate.Load(Storage, fileName, out string errMsg))
                    {
                        deviceTemplate = newTemplate;
                    }
                    else
                    {
                        Log.WriteLine(errMsg);
                    }
                }
            }

            return(deviceTemplate);
        }
コード例 #8
0
ファイル: KpModbusLogic.cs プロジェクト: ytchhh/scada
        /// <summary>
        /// Gets existing or create a new device template.
        /// </summary>
        private void PrepareTemplate(string fileName)
        {
            if (fileName == "")
            {
                WriteToLog(string.Format(Localization.UseRussian ?
                                         "{0} Ошибка: Не задан шаблон устройства для {1}" :
                                         "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption));
                deviceTemplate = null;
            }
            else
            {
                deviceTemplate = GetTemplateFactory().CreateDeviceTemplate();
                Dictionary <string, DeviceTemplate> templates = GetTemplateDictionary();

                if (templates.ContainsKey(fileName))
                {
                    // копирование свойств шаблона, загруженного ранее
                    deviceTemplate.CopyFrom(templates[fileName]);
                }
                else
                {
                    WriteToLog(string.Format(Localization.UseRussian ?
                                             "{0} Загрузка шаблона устройства из файла {1}" :
                                             "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName));
                    string filePath = Path.IsPathRooted(fileName) ?
                                      fileName : Path.Combine(AppDirs.ConfigDir, fileName);

                    if (!deviceTemplate.Load(filePath, out string errMsg))
                    {
                        WriteToLog(errMsg);
                        deviceTemplate = null;
                    }

                    templates.Add(fileName, deviceTemplate);
                }
            }
        }
コード例 #9
0
ファイル: KpModbusLogic.cs プロジェクト: firebitsbr/scada-36
        /// <summary>
        /// Выполнить действия после добавления КП на линию связи
        /// </summary>
        public override void OnAddedToCommLine()
        {
            // загрузка шаблона устройства
            deviceTemplate = null;
            elemGroups     = null;
            elemGroupCnt   = 0;
            floatSignals   = new HashSet <int>();
            string fileName = ReqParams.CmdLine.Trim();

            if (fileName == "")
            {
                WriteToLog(string.Format(Localization.UseRussian ?
                                         "{0} Ошибка: Не задан шаблон устройства для {1}" :
                                         "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption));
            }
            else
            {
                Dictionary <string, DeviceTemplate> templates = GetTemplates();
                if (templates.ContainsKey(fileName))
                {
                    // создание шаблона устройства на основе шаблона, загруженного ранее
                    DeviceTemplate template = templates[fileName];
                    if (template != null)
                    {
                        deviceTemplate = new DeviceTemplate();
                        deviceTemplate.CopyFrom(template);
                    }
                }
                else
                {
                    WriteToLog(string.Format(Localization.UseRussian ?
                                             "{0} Загрузка шаблона устройства из файла {1}" :
                                             "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName));
                    DeviceTemplate template = new DeviceTemplate();
                    string         errMsg;

                    if (template.Load(AppDirs.ConfigDir + fileName, out errMsg))
                    {
                        deviceTemplate = template;
                        templates.Add(fileName, template);
                    }
                    else
                    {
                        WriteToLog(errMsg);
                        templates.Add(fileName, null);
                    }
                }
            }

            if (deviceTemplate != null)
            {
                elemGroups   = deviceTemplate.GetActiveElemGroups();
                elemGroupCnt = elemGroups.Count;
            }

            // инициализация тегов КП на основе модели устройства
            if (deviceTemplate.ElemGroups.Count > 0)
            {
                List <TagGroup> tagGroups = new List <TagGroup>();
                int             tagInd    = 0;

                foreach (ElemGroup elemGroup in deviceTemplate.ElemGroups)
                {
                    TagGroup tagGroup = new TagGroup(elemGroup.Name);
                    tagGroups.Add(tagGroup);
                    elemGroup.StartKPTagInd = tagInd;

                    foreach (Elem elem in elemGroup.Elems)
                    {
                        int signal = ++tagInd;
                        tagGroup.KPTags.Add(new KPTag(signal, elem.Name));
                        if (elem.ElemType == ElemTypes.Float)
                        {
                            floatSignals.Add(signal);
                        }
                    }
                }

                InitKPTags(tagGroups);
                CanSendCmd = deviceTemplate.Cmds.Count > 0;
            }
        }