Модуль сервера (получить значения тега)

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

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

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

    #30924
    manjey73
    Участник

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

    #30925
    JurasskPark
    Участник

    Про модуль сервера.

    #30926
    manjey73
    Участник

    Из модуля наверное можно, по крайней мере я доставал родительские объекты, дочерние и т.д.
    Опять же, модули Быстрый шлюз, Автоуправления они же данные забирают.

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

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

    #30929
    JurasskPark
    Участник

    Я ждал ссылку на пример кода)

    #30930
    manjey73
    Участник

    ConfigDataset.CnlTable — вообще ConfigDataset смотрите, там все таблицы.

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

    Я ждал ссылку на пример кода)

    Правильный алгоритм более ценен, чем примеры )
    Используйте исходники ModDbExport, этот модуль как раз читает данные.
    Задавайте более конкретные вопросы.

    #31215
    JurasskPark
    Участник

    Возвращаемся к вопросу.

            /// <summary>
            /// Processes new data.
            /// </summary>
            public override void ProcessData(ICurrentData curData)
            {
                 //WriteOnChange(curData);
            }
    

    Я как понял мне нужен ICurrentData curData (правда нашел я его в Influx), но как его получать я не понял. 😀
    На ProcessData говорится, что не найден метод как переопределенный.

    P.S. С таблицами я разобрался. Оказывается serverContext его содержит. 😀
    this.configDatabase = serverContext.ConfigDatabase;

    #31216
    JurasskPark
    Участник

    ОООООО!!!!

    foreach (int cnlNum in cnlNums)
                {
                    CnlData curCnlData = serverContext.GetCurrentData(cnlNum);
    
                    if (!skipUnchanged || ChannelDataChanged(cnlNum, curCnlData))
                    {
                        if (sliceCnlNums == null)
                        {
                            sliceCnlNums = new List<int>(SliceSize);
                            sliceCnlData = new List<CnlData>(SliceSize);
                        }
    
                        sliceCnlNums.Add(cnlNum);
                        sliceCnlData.Add(curCnlData);
    
                        if (sliceCnlNums.Count == SliceSize)
                            AddSlice();
                    }
                }
    

    Нашел.

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

    Нужен был метод ServerContext.GetCurrentData ?

    #31225
    JurasskPark
    Участник

    Нужен был метод ServerContext.GetCurrentData ?

    Ну да. Как вы в ModDiffCalculator ведете расчете. Мне тоже, нужно было в модуле взять текущее значение, пересчитать и записать в другой тег(канал). 🙂

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