Стартовая страница › Форумы › Разработка и интеграция › Посылка команды
- В этой теме 7 ответов, 4 участника, последнее обновление 2 года, 3 месяца назад сделано
sergyltd.
-
АвторЗаписи
-
30.03.2024 в 20:48 #31733
sergyltdУчастникЗдравствуйте
Озаботился написать что-нибудь небольшое для отсылки команды внутреннему устройству (Емэйл например) Опыт программирования на C# небольшой, а для Рапид Скады еще меньше. Прошу совета.Идея такова:
Создать некоторое устройство с драйвером которое проверяет свой канал, считывает некоторую строку?? (или ссылку на текстовый файл) вида — устройство, номер команды, код команды, тело команды. Получив эти данные драйвер формирует команду ТУ и отправляет ее драйверу/устройству получателю.
Тогда в любом выходном канале можно написать SetVal(канал моего драйвера, строка которая ссылка на файл) и таким образом отправить емэйл с текстом из файла. Ну текст письма можно в дальнейшем варьировать — номер канала, статус, и т.п.
Нужен совет — будет ли эта идея работать В ПРИНЦИПЕ? А если будет, то не совсем понятно какой должна быть линия чтобы отсылать команды от устройства «брокер» (условно) к устройствам емэйл, телеграм, HTTPNotify? Ведь это внутренний код, но линия вроде нужна?!?31.03.2024 в 06:44 #31735Romiros
УчастникSetVal(n, val) double Устанавливает текущее значение канала n.
SetVal не подойдёт. В формуле нужно передать значение в формате double, а не строковое значение.31.03.2024 в 12:32 #31740
sergyltdУчастникЗдравствуйте
Да Вы правы SetVal в таком виде не пойдет. Ну тогда немного по другому. Создаем файл CSV вида CnlNum, CnlStat, CmdToDevNum, CmdNum, CmdCode, CmdValue.
Тип команды всегда строка, данные канала может добавить драйвер на этапе формирования команды. Этот файл создаем заранее, на этапе конфигурации. А в канал посылаем SetData(n, Val, Stat) где Val — это номер канала инициатора отсылки команды, а Stat это вторая колонка (CnlStat), индекс внутри одного канала. Ну т.е. если канал 3 имеет 5 вариантов команды, то Stat это указатель варианта.
Вот только с обработкой «родного» канала драйвера запутался. Посмотрел исходники DrvTester — там вобще своего канала нет. DrvEmail имеет 2 канала, но не нашел где он к ним обращается. Такое впечатление, что они только для названия нужны, в работе не используются….
А с линией кажется разобрался — она должна быть Undefined. Правильно?31.03.2024 в 12:41 #31742
a80808УчастникВ DrvEmail каналы скорее всего нужны те, через которые идет команда на отправку почты. Как сделано в приложении Автоотчет. И по моему также отправлялась почта (через команду =в канале) в версиях до 5.7…могу ошибаться
31.03.2024 в 13:15 #31744
sergyltdУчастникТак вот и я, увидел каналы — обрадовался. Михаил написал, что через канал не отправишь. Посмотрел код формы из свойств устройства, которая команды отправляет, так там все просто — новая команда <- номер устройства <- номер команды <- код команды <- тип <- значение. И вперед — отправить.
Вот я и хочу так сделать, только чтоб автоматом, без кнопки.01.04.2024 в 13:26 #31791
MikhailМодераторДобрый день!
Изучите базовый класс модулей ModuleLogic, чтобы понять, какие функции Вам доступны при разработке модулей Сервера.01.04.2024 в 13:27 #31793
MikhailМодераторКроме того, будет полезен IServerContext
01.04.2024 в 14:33 #31801
sergyltdУчастникСпасибо! Буду изучать.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.