Использование формулы для данных SNMP

Стартовая страница Форумы Понять, как работает ПО Использование формулы для данных SNMP

Помечено: ,

Просмотр 4 сообщений - с 16 по 19 (из 19 всего)
  • Автор
    Сообщения
  • #38698
    manjey73
    Участник

    Convert.ToDouble(Cnl)/10 тогда уж.
    Просто (double) работать будет неверно, насколько помню.

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

    Данные в канал приходят как Int64. Лучше исходный канал оставить как есть без формулы для экспериментов. Для отладки формулы создайте другой канал расчётного типа.
    В формуле потребуется побайтно считать значение исходного канала в переменную типа Int64. Затем вывести значение в лог файл, чтобы убедиться, что он такое, какое нужно. Далее преобразовать его в double и разделить на 10.

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

    Примерно так:

    public double MyCalc(int cnlNum)
    {
      Int64 intVal = BitConverter.DoubleToInt64Bits(Val(cnlNum));
      double doubleVal = (double)intVal;
      return doubleVal / 10;
    }
    
    #38880
    Vitaly_Zhidkov
    Участник

    Поставил в настройках устройства тип Double вместо Int64. А в таблице каналов убрал в столбце «Тип данных» Integer, оставил это поле пустым. В этом случае входная формула Cnl/10 применяется.
    Спасибо за подсказку.

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