Посылка команды

Помечено: ,

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Записи
  • #31733
    sergyltd
    Участник

    Здравствуйте
    Озаботился написать что-нибудь небольшое для отсылки команды внутреннему устройству (Емэйл например) Опыт программирования на C# небольшой, а для Рапид Скады еще меньше. Прошу совета.Идея такова:
    Создать некоторое устройство с драйвером которое проверяет свой канал, считывает некоторую строку?? (или ссылку на текстовый файл) вида — устройство, номер команды, код команды, тело команды. Получив эти данные драйвер формирует команду ТУ и отправляет ее драйверу/устройству получателю.
    Тогда в любом выходном канале можно написать SetVal(канал моего драйвера, строка которая ссылка на файл) и таким образом отправить емэйл с текстом из файла. Ну текст письма можно в дальнейшем варьировать — номер канала, статус, и т.п.
    Нужен совет — будет ли эта идея работать В ПРИНЦИПЕ? А если будет, то не совсем понятно какой должна быть линия чтобы отсылать команды от устройства «брокер» (условно) к устройствам емэйл, телеграм, HTTPNotify? Ведь это внутренний код, но линия вроде нужна?!?

    #31735
    Romiros
    Участник

    SetVal(n, val) double Устанавливает текущее значение канала n.
    SetVal не подойдёт. В формуле нужно передать значение в формате double, а не строковое значение.

    #31740
    sergyltd
    Участник

    Здравствуйте
    Да Вы правы SetVal в таком виде не пойдет. Ну тогда немного по другому. Создаем файл CSV вида CnlNum, CnlStat, CmdToDevNum, CmdNum, CmdCode, CmdValue.
    Тип команды всегда строка, данные канала может добавить драйвер на этапе формирования команды. Этот файл создаем заранее, на этапе конфигурации. А в канал посылаем SetData(n, Val, Stat) где Val — это номер канала инициатора отсылки команды, а Stat это вторая колонка (CnlStat), индекс внутри одного канала. Ну т.е. если канал 3 имеет 5 вариантов команды, то Stat это указатель варианта.
    Вот только с обработкой «родного» канала драйвера запутался. Посмотрел исходники DrvTester — там вобще своего канала нет. DrvEmail имеет 2 канала, но не нашел где он к ним обращается. Такое впечатление, что они только для названия нужны, в работе не используются….
    А с линией кажется разобрался — она должна быть Undefined. Правильно?

    #31742
    a80808
    Участник

    В DrvEmail каналы скорее всего нужны те, через которые идет команда на отправку почты. Как сделано в приложении Автоотчет. И по моему также отправлялась почта (через команду =в канале) в версиях до 5.7…могу ошибаться

    #31744
    sergyltd
    Участник

    Так вот и я, увидел каналы — обрадовался. Михаил написал, что через канал не отправишь. Посмотрел код формы из свойств устройства, которая команды отправляет, так там все просто — новая команда <- номер устройства <- номер команды <- код команды <- тип <- значение. И вперед — отправить.
    Вот я и хочу так сделать, только чтоб автоматом, без кнопки.

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

    Добрый день!
    Изучите базовый класс модулей ModuleLogic, чтобы понять, какие функции Вам доступны при разработке модулей Сервера.

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

    Кроме того, будет полезен IServerContext

    #31801
    sergyltd
    Участник

    Спасибо! Буду изучать.

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Для ответа в этой теме необходимо авторизоваться.