![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Neon6868 |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Проблема в следующем:
С АЦП с большой скоростью поступают числовые значения. Необходимо выводить все эти значения на график. Пробовал использовать компонент TChart, но рисование выполняется очень медленно(использовал метод LineTo), вследствие чего переполняется буфер со значениями АЦП и программа закрывается. Возможно ли использовать для таких целей TChart? Также пробовал использовать канву, график вроде как успевает рисоваться. Но возникает проблема с прокруткой изображения. Я помещал PaintBox на ScrollBox. Если изменять свойство Position у ScrollBox'a при выводе каждой точки, то график опять начинает рисоваться очень медленно. Подскажите возможно ли мне использовать TChart? Если все же придется использовать канву, то как сделать автоматическую прокрутку изображения при рисовании графика? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых, показывай как пробовал рисовать (LineTo у TChart-а отродясь не было, ты что-то путаешь). И во-вторых - оцени примерно, с какой скоростью поступает информация (и в каком виде, кстати) с АЦП. Каков размер буфера?
Если данные будут продолжать поступать очень быстро - отрисовка все равно не справится, буфер будет переполняться. Другое дело - если в работе АЦП есть перерывы, когда данные либо прекращают поступать совсем, либо поступают с меньшей скоростью. Если таких пауз не предусматривается - то, похоже, единственное решение - это писать данные с АЦП напрямую в БД, а уж из БД - отрисовывать. Но тогда возможно запаздывание, если рисовать все подряд. Можно еще поизвращаться и сделать вот так, например: пока буфер относительно пуст - рисовать все, что в него поступает. Как только он начинает переполняться - рисовать только каждое второе значение, а первое - просто отбрасывать. Опять быстро заполняется - отбрасывай 2 и рисуй каждое третье (если такая высокая скорость поступления данных - это не должно сказаться на качестве графика). В общем, "нужно больше информации", как говорил герой "Короткого замыкания" ![]() А, да. Вот еще что уточни: что ты подразумеваешь под "прокруткой"? То есть, ты в любое время должен иметь возможность прокручивать сколь угодно далеко назад и смотреть график, или имеется в виду, что как только отображение достигло границ формы, оно должно начать сдвигаться налево, и справа добавлять новые значения (а пользователь при этом не имеет возможность просмотреть, что было пару экранов назад)? |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 3:37 |