Запретить опрос линии при старте

Стартовая страница Форумы Разработка и интеграция Запретить опрос линии при старте

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

    Собственно вопрос, можно ли запретить опрос линии при ее старте и запретить опрашивать устройство на линии даже раз в сутки сейчас какими-нибудь механизмами в драйвере ?

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

    Для опроса вызывается метод Session. Вы можете там сделать любую проверку и не опрашивать прибор при каких-либо условиях.

    #5559
    manjey73
    Участник

    Вот не совсем понимаю…
    public override void Session()
    {
    Что-то тут проверять ?
    base.Session();
    Или тут проверять ?
    Код опроса…..
    }

    Что именно проверять, когда стартует линия ? и главное, как разрешить опрос, когда мы посылаем команду внеочередного опроса КП ? ручками или через модуль автоматического управления.

    #5560
    manjey73
    Участник

    Так, с проверкой более менее понятно, есть пример в KpSnmp
    Но вот в моем случае непонятно на что проверять ?

    Что надо вызвать или проверить, чтобы при старте не произошел опрос, так же НЕ происходил опрос при командах Коммуникатора при наступлении времени опроса, но при этом происходил опрос если руками или через Модуль авт. управления поступила команда на опрос КП ?

    Да, и при таком варианте получается Коммуникатор пишет Сеансы связи 1, команд и запросов по нулям

    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    #5561
    Romiros
    Участник

    Заведите переменную, отвечающeющую за разрешение опроса.
    Например:
    private bool request = false;

    public override void Session()
    {
    base.Session();
    if (request)
    {
    //Выполняете Ваш опрос
    request = false;
    }
    }

    public override void SendCmd(Command cmd)
    {
    if (cmd.CmdTypeID == BaseValues.CmdTypes.Request)
    request = true;
    }

    Что-то типа того

    #5563
    manjey73
    Участник

    Проблемка только есть, драйвер универсален, при одном вызове он может читать мгновенные значения. А при другом мне надо его тормозить до момента ручного опроса, но без подачи команд управления… именно чтение параметров, никакой подачи команд ТУ

    По этому и спрашиваю, есть ли что-то, что посылает при вызове Коммуникатор, что наступило время опроса или что это внеочередной опрос, чтобы можно было понять, тут тормозим, а тут все-таки опрашиваем.

    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    #5566
    manjey73
    Участник

    2017-04-26 16:09:00 Сеанс связи с КП 73 «Merc206s», тип: KpMercury20x, адрес: 24070062

    2017-04-26 16:09:20 Сеанс связи с КП 73 «Merc206s», тип: KpMercury20x, адрес: 24070062

    2017-04-26 16:09:40 Сеанс связи с КП 73 «Merc206s», тип: KpMercury20x, адрес: 24070062

    И главное вот что происходит, когда после base.Session(); запрещаешь опрос.
    Постоянный вывод строк со стороны Коммуникатора, хотелось бы избежать и этого

    Ваш вариант не прокатил, опроса не произошло.

    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    #5576
    manjey73
    Участник

    Копался в исходниках копался, но так и не понял
    1. Драйвер каким-то образом может узнать, что он был вызван не по периоду, не по времени а именно внеочередным способом ?
    2. В догонку еще вопрос,
    tagGroup.KPTags.Add(new KPTag(1, «Напряжение (В)»));
    tagGroup.KPTags.Add(new KPTag(2, «Ток (А)»));

    Номера сигналов переносятся в какой-то массив или Список на лету разбирается для таблички сигналов, переменных и привязки тегов КП ?

    #5578
    Romiros
    Участник

    Ваш вариант не прокатил, опроса не произошло.
    Отправьте стандартную команду. У меня работает

    #5581
    manjey73
    Участник

    Попробую, мне нужна не столько Стандартная команда, а как-то идентифицировать что посылает Модуль Автоматического управления при указании Опрос КП…

    #5585
    Romiros
    Участник

    Посмотрите в журнале линии связи, наверняка команду. Я просто этот модуль в глаза не видел. Может в логе будет прописана команда, её тип и номер?

    #5586
    manjey73
    Участник

    Да, просто прописал как для остальных команд с номером команды 1, тогда сработал опрос.
    Но это немного не то, огород какой-то в некотором роде…
    Потому что при использовании формулы опрашивать раз в месяц надо будет посылать конкретную команду…

    Ладно, подождем Михаила, что скажет начальник транспортного цеха 🙂

    Нет там команд, скорее всего просто указание Коммуникатору, а тот уже вставляет в очередь необходимый КП для опроса.

    Зря в глаза не видели, отличный модуль, ну чуток доработать (расширить функционал временных рамок для таймеров) в исполнении «из коробки»

    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    • Ответ изменён 9 лет, 4 месяца назад пользователем manjey73.
    #5591
    Romiros
    Участник

    Интерфейс для общения с коммуникатором представлен override методами, других нет. Модуль автоуправления использует их же. Копайте там.
    Если Вам нужно раз в месяц сделайте условие по дате(и допустим повторяйте опрос пока данные не поступят ) и тогда не надо никаких команд.

    #5592
    manjey73
    Участник

    Не, как-то через одно место работает, один раз прочитало, потом отлуп

    #5593
    Romiros
    Участник

    Работает нормально, только что проверил. Где-то в коде косяк проверьте.

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