Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Просмотр сообщения события с помощью скрипта C#

  1. #1

    По умолчанию Просмотр сообщения события с помощью скрипта C#

    Здравствуйте. Пытаюсь перебрать все события в проекте и вытащить из них формулы и сообщения. С формулами проблем нет, предусмотрено специальное свойство Formula, а вот сообщения не могу понять как вытащить. Вот мой код:
    Код:
    public partial class ФБ : ScriptBase
    {
    
        const string FilePathName = "D:\\report.csv";
        
        public override void DoAction()
        {
        using (var file = new StreamWriter(FilePathName, false, Encoding.GetEncoding("windows-1251")))
        	{
        	//перебор всех значений данного объекта
    	    HostFB.TreeItemHlp.Project.ObjectTreeRootItem.NavigateChilds(delegate(ITreeObjectHlp e)
    	     {
    	     	if(e.TypeName == "Событие" || e.TypeName == "Расчет")
    	    		{
    	    			
    	    			var action = e as ParserHlp;
    	    	
    	    			if(action.Formula != null)
    	    			{
    					string frm = action.Formula.Replace("\n", "");
    					frm = frm.Replace("\r", "");
    		    			file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
    	    			}
    	    		}
    	    		return true;	
    	     },  TreeItemMask.All, NavigateItemsFlags.CurrentComputer);  
    	    }
    	    }
    }
    Может кто-нибудь знает как получить сообщение, заранее благодарен

  2. #2

    По умолчанию

    Пример проставления связей и сообщений:
    HostFB.TreeItemHlp.Parent.NavigateChilds(delegate( ITreeObjectHlp item)
    {
    var parser=(EventHlp)item;

    var innerPin=parser.AddInput("НоваяСвязь");
    var targetPin=item.ParentObject.GetPin("Значение 1");
    innerPin.Connect(targetPin); //pout - выход с которым надо связать
    innerPin.DesignType = typeof(double);
    //innerPin.pi
    parser.Formula="НоваяСвязь=0";
    parser.Pattern="Новое сообщение";
    parser.ApplyChange();
    return true;
    }, TreeItemMask.Event, 0);
    Спасибо.

  3. #3

    По умолчанию

    Ничего себе, спасибо огромное!!! И как я не заметил, что у события не такой тип как у расчёта
    А вы не знаете, можно ли что-то похожее сделать с ФБ "Обработка аналогового параметра", там есть префикс сообщений, можно ли его тоже изменить из скрипта?

  4. #4

    По умолчанию

    Чтение:
    item.Properties.GetProperty(CatID.General, (int)PropID.General.EventMessagePrefix, false, "")
    Запись через метод SetProperty, а затем применить методом ApplyChanges
    Спасибо.

  5. #5

    По умолчанию

    Все работает отлично, спасибо!
    Я по той же схеме пытался получить доступ к полю "Сокращённое наименование" в настройках ФБ "Обработка аналогового параметра", перепробовал вроде все варианты PropID, но у меня ничего не вышло... Подскажите это можно как-нибудь сделать? И может вы посоветуете какую-нибудь инструкцию по всем этим классам и методам, а то в стандартной справке MasterSCADA маловато информации.

  6. #6

    По умолчанию

    Пример в приложении
    Вложения Вложения
    Спасибо.

  7. #7

    По умолчанию

    Спасибо, это как раз то что нужно!
    У меня ещё такой вопрос. Есть мнемосхема с большим количеством элементов, основные из которых это Текст и Изображение ФБ, можно ли как-то через скрипт перебрать все элементы мнемосхемы, и просмотреть для каждого свойство Имя, для Текста также хотелось бы получить свойство Текст, а для Изображения ФБ - Наименование исполнительного механизма.
    Заранее спасибо

  8. #8

    По умолчанию

    В приложении пример скрипта, который производит замену текста в контролах "значеие" и "Кнопка".
    В нем происходит обращение по ID, имя - свойство Name
    Вложения Вложения
    Спасибо.

  9. #9

    По умолчанию

    Цитата Сообщение от Vinsen Посмотреть сообщение
    Здравствуйте. Пытаюсь перебрать все события в проекте и вытащить из них формулы и сообщения. С формулами проблем нет, предусмотрено специальное свойство Formula, а вот сообщения не могу понять как вытащить. Вот мой код:
    Код:
    public partial class ФБ : ScriptBase
    {
    
        const string FilePathName = "D:\\report.csv";
        
        public override void DoAction()
        {
        using (var file = new StreamWriter(FilePathName, false, Encoding.GetEncoding("windows-1251")))
        	{
        	//перебор всех значений данного объекта
    	    HostFB.TreeItemHlp.Project.ObjectTreeRootItem.NavigateChilds(delegate(ITreeObjectHlp e)
    	     {
    	     	if(e.TypeName == "Событие" || e.TypeName == "Расчет")
    	    		{
    	    			
    	    			var action = e as ParserHlp;
    	    	
    	    			if(action.Formula != null)
    	    			{
    					string frm = action.Formula.Replace("\n", "");
    					frm = frm.Replace("\r", "");
    		    			file.WriteLine(string.Format("{0};{1}", action.FullName, frm));
    	    			}
    	    		}
    	    		return true;	
    	     },  TreeItemMask.All, NavigateItemsFlags.CurrentComputer);  
    	    }
    	    }
    }
    Может кто-нибудь знает как получить сообщение, заранее благодарен
    Можешь поделиться итоговым скриптом?

  10. #10

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    В приложении пример скрипта, который производит замену текста в контролах "значеие" и "Кнопка".
    В нем происходит обращение по ID, имя - свойство Name
    Спасибо! Все заработало как и хотел.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Просмотр архивных файлов .csv
    от kondrat в разделе Эксплуатация
    Ответов: 14
    Последнее сообщение: 07.06.2017, 18:43
  2. Ответов: 1
    Последнее сообщение: 13.02.2017, 13:10
  3. Ответов: 7
    Последнее сообщение: 26.11.2013, 09:11
  4. Звук при выводе события и сообщения
    от Salvafion в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 06.09.2011, 17:29
  5. обращение к журналу из скрипта
    от Михаил Ч. в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 12.07.2010, 15:22

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •