• Автор
    Тема
  • #136677
    no_img
    Digger23
    Участник

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

    • Эта тема была изменена 1 неделя, 6 дн. назад пользователем no_img Digger23.
  • Автор
    Ответы
  • #136707

    Добрый день!
    Вопрос синхронизации в ZETVIEW очень непростой, и в частности это касается компонента «График».
    Первая проблема — это отображение нескольких графиков. Пока график один, то его можно отображать всякий раз когда на вход приходит новая порция данных. Например, график самописца, когда каждый новый результат измерения не выбрасывается, а добавляется в конец графика. Когда графиков несколько, то отображать на изменение каждого входного набора данных не разумно, так как это приводит к лишним операциям рисования. Например, когда мы работаем с массивами в режиме накопления данных, то первый пришедший массив будет нарисован целиком, а остальные без последней точки. Когда придёт второй массив первый будет перерисован заново и т.д. Или будут заметные «волнообразные» изменения графиков, когда мы массивы размер массивов не изменяется, а изменяются все данные целиком, например, при измерении спектров. Поэтому мы добавили в компонент «График» входной контакт логического типа «Снхронизация», на который подаём сигнал из компонента «Таймер», по сигналу с которого обновляются все графики одновременно при выборе свойства «xystate» любого параметра кроме «y(n)».
    Отсюда вытекает ещё одна проблема — отображение большого количества данных. На текущий момент компонент «График», который использует Active-X компонент GridGL.ocx, может отображать массивы, содержащие до 600 тыс. точек благодаря некоторым допущениям и оптимизации. Поэтому ось Х в наших графиках подразумевает равномерное разбиение интервала на точки — будь то порядковые номера, или вещественные числа, или значения времени. Если в новых данных по оси Х равномерность не нарушается и шаг между точками остаётся постоянным, то компонент «График» не выполняет пересчёт и отображение новых графиков происходит быстрее. Но если новое значение нарушает закономерность, то выполняются все функции расчёта и рисования. А за увеличившееся время ожидания приходят новые данные.
    При выборе в свойстве «xystate» варианта «y(x) — реально» полный перерасчёт происходит регулярно.

    Поэтому мы в наших проектах ZETVIEW, работающих с большим количеством данных, используем синхронизацию расчётов и отображения с помощью компонента «Таймер».

    #136708
    no_img
    Digger23
    Участник

    Благодарю за информацию.

    При выборе в свойстве «xystate» варианта «y(x) — реально» полный перерасчёт происходит регулярно.

    Я уже отправил свой тестовый проект на вашу эл. почту, к сожалению, даже в режиме «y(x) — реально» с двумя графиками регулярного перерасчета не происходит, помогает только нарушение шага значений по Х. Не исправляет ситуацию даже подача импульса на вход «Синхронизация» компонента «График».

    #136709

    Спасибо за обратную связь. Ответ направим по электронной почте.

Для ответа в этой теме необходимо авторизоваться.

Авторизация
*
*

Потеряли пароль?

Политика конфиденциальности персональных данных

Регистрация
*
*
*

Политика конфиденциальности персональных данных

Генерация пароля