Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: C# - как отобразить параметр из своего ВФБ на тренде?

  1. #11
    Пользователь
    Регистрация
    05.06.2019
    Адрес
    Где-то в этой стране
    Сообщений
    62

    По умолчанию

    Да, добавил:
    ссылку на сборку "MasterSCADA.RT.dll",
    и в код добавил "using MasterSCADA.RT.Windows.ControlContextMenu;"


    private void add_log<T>(string name, T x){
    HostFB.TreeItemHlp.Project.ErrorTracer.ReportError (name+"="+x.ToString());
    }
    void Show_Trend(){
    foreach (IDocumentHlp document in HostFB.TreeItemHlp.Project.Documents){
    IAttributeHlp attribute = document.Attribute;
    if (attribute.Opened){

    var mnemoInfo = attribute.CurrentCallInfo;
    var callType = mnemoInfo.CurrentCallType;
    add_log("mnemoInfo",mnemoInfo);
    add_log("callType",callType);

    if (attribute.DocumentInfo.Handle != 0 && callType == MasterSCADA.Interfaces.ECallType.ctWindow ){

    string path="Объект.Котельные.Значение параметра";
    var item=HostFB.TreeItemHlp.Project.Item(path);
    var ccms = (ControlContextMenuService)HostFB.TreeItemHlp.Proj ect.Services.GetService(typeof(ControlContextMenuS ervice));
    ccms.ShowTrend(HostFB.TreeItemHlp.Project, (ITreePinHlp)item, true, false, (System.IntPtr)attribute.DocumentInfo.Handle );
    return;
    }
    }
    }
    }



    1. Всё компилируется, но непонятно, что подставить в качестве "IntPtr owner": выдаёт исключение "Выполнение Котельные.Скрипт | Адресат вызова создал исключение. : 0X80131604"

    2. Как модифицировать строку "HostFB.TreeItemHlp.Project.ErrorTracer.ReportError (name+"="+x.ToString())", чтобы сообщения в лог попадали без статуса "ошибка"?

  2. #12

    По умолчанию

    Цитата Сообщение от Андрей_Б. Посмотреть сообщение

    1. Всё компилируется, но непонятно, что подставить в качестве "IntPtr owner": выдаёт исключение "Выполнение Котельные.Скрипт | Адресат вызова создал исключение. : 0X80131604"
    own = MasterSCADAHlp.Instance.MainWindowHandle;
    Спасибо.

  3. #13
    Пользователь
    Регистрация
    05.06.2019
    Адрес
    Где-то в этой стране
    Сообщений
    62

    По умолчанию

    Походу, не светит мне ничего.. исключение и всё тут!

    System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.InvalidOperationException: Вызывающим потоком должен быть STA, поскольку этого требуют большинство компонентов UI.

    в System.Windows.Input.InputManager..ctor()
    в System.Windows.Input.InputManager.GetCurrentInputM anagerImpl()


    Надо полагать, что это попытка вторгнуться в соседний поток

  4. #14

    По умолчанию

    Судя по всему вы пытаетесь работать с трендом в скрипте или каком-то обработчике событий из рабочих потоков.
    Тогда надо использовать BeginInvoke, но внимательно с этим быть, чтобы не переполнить очередь сообщений.
    Про BeginInvoke было в блоге
    https://insat.ru/blog/fb-skript-c-i-...lenie-trendom/
    Спасибо.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Отобразить/Спрятать контрол ВФБ
    от Vinsen в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 21.12.2017, 10:36
  2. Создание своего ФБ
    от Александр N в разделе Master SCADA 3
    Ответов: 11
    Последнее сообщение: 13.11.2016, 20:43
  3. Ответов: 6
    Последнее сообщение: 05.10.2016, 10:57
  4. Отобразить название устройства
    от ALEXSP в разделе Master SCADA 3
    Ответов: 8
    Последнее сообщение: 27.11.2015, 16:58
  5. как отобразить состояние мдвв
    от bob_grin в разделе OWEN Proces Manager
    Ответов: 3
    Последнее сообщение: 20.12.2010, 21:55

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

Ваши права

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