Модули сервера V6, возможности?

Стартовая страница Форумы Разработка и интеграция Модули сервера V6, возможности?

  • В этой теме 59 ответов, 4 участника, последнее обновление 1 год назад сделано Mikhail.
Просмотр 15 сообщений - с 16 по 30 (из 60 всего)
  • Автор
    Сообщения
  • #28033
    manjey73
    Участник

    Может есть пример асинхронного запроса, который будет находиться в общем проекте и без тормозов ?

    #28040
    Romiros
    Участник

    Вообще async работает в паре с await, по идее в интернете должна быть куча примеров.

    #28046
    manjey73
    Участник

    ну мне пример бы в рамках модулей.
    Как Михаил написал, модуль работает примерно 10 раз в секунду, а тут только опрос может быть десятки секунд.
    Вот нужен пример как в таком случае запустить задачу, а потом проверять что она завершилась. ну и код должен быть по возможности в общем проекте, чтобы его использовать и из .Logic и из .View

    #28049
    Mikhail
    Модератор

    Можно здесь посмотреть. Или поищите по исходникам слово async. Но лучше в документации по WinForms почитать.

    #28051
    manjey73
    Участник

    Искал по async но правда именно в модулях. Ничего не нашел.
    Суть такая. Есть API сторонней системы. демо вариант имеет мало данных, совсем мало, и при этом читает около 2-х секунд. Если использовать код HttpNotif как он был, то на эти 2-е секунды окно просто замерзает напрочь…
    Я даже завернул этот код в вызов Task и сработало, но пока разбираюсь в целом…

    Данных в реальности будет гораздо больше, там десятки секунд если даже не минуты на чтение. Надо.
    1. Код должен находиться в Shared так как его будет использовать и .Logic и .View
    2. Вызовы не мешали друг другу при этом
    3. Надо чтобы окно не замерзало так как долго читается
    4. Вот еще такой момент, возможность ЗАКРЫТЬ окно настроек во .View а потом открыть и увидеть результат — такое при вызове форм возможно реализовать или тут все, тупик?
    В идеале в том числе и для модулей…

    Так как в модуле OnIteration запуск происходит до 10 раз в секунду, нужно отслеживать async запрос — завершил он действие или еще работает — вот тут непонятно через что эти запросы делать. Что-то через Task Status у меня не вышло.
    делал цикл While с проверкой статуса и облом, уходим в зависон, но вижу что задача никогда не кончается вдруг почему-то????
    Толковых примеров пока не могу найти.

    #28052
    manjey73
    Участник

    Еще интересует организация очереди отправки… чтобы не всем скопом отправлять а кусками, или так же в async завернуть…

    #28054
    manjey73
    Участник

    Собственно одна из проблем это отсутствие у async вариантов out, ref
    Как передавать полученные данные в основной код, когда сам по себе код запроса находится в shared….

    то есть надо избавиться от тормозов и передавать данные, когда они поступят.

    • Этот ответ был изменен 1 год назад от manjey73.
    #28060
    manjey73
    Участник

    с async немного разобрались, спасибо chatGPT 🙂

    Как получить доступ к проекту из .View при запуске Свойств модуля? ссылки на код в исходниках ну и пните направлением…

    И какие есть окна для свойств Модулей штатные, типа аналога «Параметры» для драйвера ?

    #28066
    manjey73
    Участник

    Собственно интересует реализация данных двух окон и перетасивание из дерева одного окна в другое.

    Что это за окна и как реализовать дерево ? Есть готовые конструкторы в исходниках, чтобы подсовывать свое и получить такое же… ?

    2

    • Этот ответ был изменен 1 год назад от manjey73.
    • Этот ответ был изменен 1 год назад от manjey73.
    #28083
    Mikhail
    Модератор

    OnIteration относится только к серверному коду. В интерфейсе модуля его нет.
    К проекту целиком имеют доступ только расширения Администратора. Из View модуля Вы можете получить доступ к базе конфигурации. Посмотрите класс LibraryView
    Стандартные формы редактирования параметров вызываются из ModActiveDirectory, драйверов MQTT и SNMP. Идея в том, что Вы готовите конфигурационные классы определённым образом и передаёте их в готовую форму.

    • Этот ответ был изменен 1 год назад от Mikhail.
    #28084
    Mikhail
    Модератор

    Также полезно посмотреть, как сделана передача конфигурации в Администраторе.
    Перетаскивание drag-and-drop в Rapid SCADA нигде не используется 🙂 Конечно в WinForms оно есть.

    #28086
    manjey73
    Участник

    На счет готовых классов посмотрю, подойдет или нет.

    Проблема во взаимосвязях, если сделать кнопки кинь та или выкинь то будет добавляться в конец. А надо в строгие места будет засовывать. ну или как-то иначе.
    Может вариант как в настройках OPC сервера подойдет с нюансами…

    drag-n-drop был бы кстати тут …

    • Этот ответ был изменен 1 год назад от manjey73.
    #28099
    manjey73
    Участник

    Так понимаю все находится в ConfigDataset.CnlTable но не понимаю, как его получить себе в код…

    Можно пример?

    Scada.Server.Modules.ModXXXXX.View.Forms.FrmModuleConfig.ConfigDataset.get вернул null.

    Дальше этого не добрался…

    • Этот ответ был изменен 1 год назад от manjey73.
    #28101
    manjey73
    Участник

    Получилось. И тут вопросы 🙂
    Я правильно понимаю, что просто читается файл Cnl.xml из папки проекта, если я запрашиваю CnlTable?

    Есть какая-то возможность при загрузке ConfigDataset сразу отфильтровать то, что не активно, не относится например к какому-то объекту, линии связи ?

    #28103
    Romiros
    Участник

    Можно вызывать готовые формы для каналов или устройств, как в родных модулях или драйверах. Cnl.xml загружается как таблица, поэтому стандартные методы фильтрации там доступны, до отображения на форме.

Просмотр 15 сообщений - с 16 по 30 (из 60 всего)
  • Вы должны авторизироваться для ответа в этой теме.