Стартовая страница › Форумы › Разработка и интеграция › Модули сервера V6, возможности?
- В этой теме 59 ответов, 4 участника, последнее обновление 1 год, 10 месяцев назад сделано
Mikhail.
-
АвторСообщения
-
05.04.2023 в 17:38 #28033
manjey73
УчастникМожет есть пример асинхронного запроса, который будет находиться в общем проекте и без тормозов ?
05.04.2023 в 18:29 #28040Romiros
УчастникВообще async работает в паре с await, по идее в интернете должна быть куча примеров.
05.04.2023 в 19:59 #28046manjey73
Участникну мне пример бы в рамках модулей.
Как Михаил написал, модуль работает примерно 10 раз в секунду, а тут только опрос может быть десятки секунд.
Вот нужен пример как в таком случае запустить задачу, а потом проверять что она завершилась. ну и код должен быть по возможности в общем проекте, чтобы его использовать и из .Logic и из .View06.04.2023 в 12:04 #28049Mikhail
МодераторМожно здесь посмотреть. Или поищите по исходникам слово async. Но лучше в документации по WinForms почитать.
06.04.2023 в 12:14 #28051manjey73
УчастникИскал по async но правда именно в модулях. Ничего не нашел.
Суть такая. Есть API сторонней системы. демо вариант имеет мало данных, совсем мало, и при этом читает около 2-х секунд. Если использовать код HttpNotif как он был, то на эти 2-е секунды окно просто замерзает напрочь…
Я даже завернул этот код в вызов Task и сработало, но пока разбираюсь в целом…Данных в реальности будет гораздо больше, там десятки секунд если даже не минуты на чтение. Надо.
1. Код должен находиться в Shared так как его будет использовать и .Logic и .View
2. Вызовы не мешали друг другу при этом
3. Надо чтобы окно не замерзало так как долго читается
4. Вот еще такой момент, возможность ЗАКРЫТЬ окно настроек во .View а потом открыть и увидеть результат — такое при вызове форм возможно реализовать или тут все, тупик?
В идеале в том числе и для модулей…Так как в модуле OnIteration запуск происходит до 10 раз в секунду, нужно отслеживать async запрос — завершил он действие или еще работает — вот тут непонятно через что эти запросы делать. Что-то через Task Status у меня не вышло.
делал цикл While с проверкой статуса и облом, уходим в зависон, но вижу что задача никогда не кончается вдруг почему-то????
Толковых примеров пока не могу найти.06.04.2023 в 12:15 #28052manjey73
УчастникЕще интересует организация очереди отправки… чтобы не всем скопом отправлять а кусками, или так же в async завернуть…
06.04.2023 в 12:21 #28054manjey73
УчастникСобственно одна из проблем это отсутствие у async вариантов out, ref
Как передавать полученные данные в основной код, когда сам по себе код запроса находится в shared….то есть надо избавиться от тормозов и передавать данные, когда они поступят.
-
Этот ответ был изменен 1 год, 10 месяцев назад от
manjey73.
06.04.2023 в 16:26 #28060manjey73
Участникс async немного разобрались, спасибо chatGPT 🙂
Как получить доступ к проекту из .View при запуске Свойств модуля? ссылки на код в исходниках ну и пните направлением…
И какие есть окна для свойств Модулей штатные, типа аналога «Параметры» для драйвера ?
07.04.2023 в 10:59 #28066manjey73
УчастникСобственно интересует реализация данных двух окон и перетасивание из дерева одного окна в другое.
Что это за окна и как реализовать дерево ? Есть готовые конструкторы в исходниках, чтобы подсовывать свое и получить такое же… ?
07.04.2023 в 16:27 #28083Mikhail
МодераторOnIteration относится только к серверному коду. В интерфейсе модуля его нет.
К проекту целиком имеют доступ только расширения Администратора. Из View модуля Вы можете получить доступ к базе конфигурации. Посмотрите класс LibraryView
Стандартные формы редактирования параметров вызываются из ModActiveDirectory, драйверов MQTT и SNMP. Идея в том, что Вы готовите конфигурационные классы определённым образом и передаёте их в готовую форму.-
Этот ответ был изменен 1 год, 10 месяцев назад от
Mikhail.
07.04.2023 в 16:30 #28084Mikhail
МодераторТакже полезно посмотреть, как сделана передача конфигурации в Администраторе.
Перетаскивание drag-and-drop в Rapid SCADA нигде не используется 🙂 Конечно в WinForms оно есть.07.04.2023 в 16:41 #28086manjey73
УчастникНа счет готовых классов посмотрю, подойдет или нет.
Проблема во взаимосвязях, если сделать кнопки кинь та или выкинь то будет добавляться в конец. А надо в строгие места будет засовывать. ну или как-то иначе.
Может вариант как в настройках OPC сервера подойдет с нюансами…drag-n-drop был бы кстати тут …
-
Этот ответ был изменен 1 год, 10 месяцев назад от
manjey73.
09.04.2023 в 22:01 #28099manjey73
УчастникТак понимаю все находится в ConfigDataset.CnlTable но не понимаю, как его получить себе в код…
Можно пример?
Scada.Server.Modules.ModXXXXX.View.Forms.FrmModuleConfig.ConfigDataset.get вернул null.
Дальше этого не добрался…
-
Этот ответ был изменен 1 год, 10 месяцев назад от
manjey73.
09.04.2023 в 22:57 #28101manjey73
УчастникПолучилось. И тут вопросы 🙂
Я правильно понимаю, что просто читается файл Cnl.xml из папки проекта, если я запрашиваю CnlTable?Есть какая-то возможность при загрузке ConfigDataset сразу отфильтровать то, что не активно, не относится например к какому-то объекту, линии связи ?
10.04.2023 в 07:40 #28103Romiros
УчастникМожно вызывать готовые формы для каналов или устройств, как в родных модулях или драйверах. Cnl.xml загружается как таблица, поэтому стандартные методы фильтрации там доступны, до отображения на форме.
-
Этот ответ был изменен 1 год, 10 месяцев назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.