Неверное отображение Integer в таблице

Стартовая страница Форумы Ошибки в работе Ошибки Веб Неверное отображение Integer в таблице

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #41314
    kassad
    Участник

    Здравствуйте.
    В табличном представлении неверно отображаются значения типа Integer. В то же время, как ни странно, график показывает верное значение. После изменения типа на Double в таблице «Каналы», значение отображется верно, но с дробной частью (нулями), что не является решением проблемы. Устройство Modbus TCP. В шаблоне устройства тип опрашиваемого регистра указан как ushort. В логах нет ошибок. На скрине ниже отображено следующее:
    1. Значение в самом slave устройстве.
    2. Значения, полученные от устройства в приложении «Администратор».
    3. Табличное представление непосредсвенно в веб-брузере.
    4. График проблемного канала.
    5. Таблица «Каналы» в Администраторе.
    https://ibb.co/1tbVQ3NS

    #41315
    manjey73
    Участник

    Просто установите формат D.
    Integer немного для других вещей предназначен. Для явной работы с битовой маской и т.д. именно целочисленных значений int64

    #41316
    kassad
    Участник

    В качестве временного решения — сойдет. Но, в целом, это очевидный баг. Применение Double в скриптах, в некоторых случаях, может потребовать дополнительных действий (кастинг/округление) из-за особенностей работы с плавающей точкой. Зачем кодить эти костыли?

    #41317
    manjey73
    Участник

    Это вы претензии реляционным бд наверное направьте.
    Она то не может хранить столбец ни в чем ином, как в выставленном. А тут double. 😀

    Давно говорил и говорю, что в нынешних реалиях чистокровные бд уже не подходят для scada систем. Но тут и другой конец палки есть — скорость.
    Скрипт, это единичный случай, против всех данных в бд.

    #41318
    manjey73
    Участник

    я вам больше скажу, чтобы использовать один скрипт из другого, нужно приводить в скриптах в double. Некоторая особенность компиляции скриптов движком.
    Например мы делаем public bool скрипт, но чтобы это скрипт использовать внутри другого скрипта (например вы точно знаете, что данный скрипт будет использоваться внутри другого), то надо сделать public double и вернуть конвертацию — return Convert.ToDouble в итоге.

    Есть некоторые неудобства, но когда поймете принципы, не сильно парит.

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

    Добрый день!
    Чтобы в канале ставить тип Integer, драйвер должен выдавать данные именно такого типа. Популярные драйверы все возвращают double. Поэтому форматом меняйте отображение значений.

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