C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
графики в реальном режиме, графики в реальном режиме
Valentin
Отправлено: 09.04.2004, 19:13


Не зарегистрирован







Может кто сталкивался с подобной проблемой.
С устройства идет информация со скоростью 512 чисел в секунду, так вот, эту инф. надо как-то отобразить, компонент TChart не подходит (не может работать с нужной скоростью), как это можно сделать?
Заранее благодарен за помощь.
Asher
Отправлено: 09.04.2004, 19:30


Мастер участка

Группа: Модератор
Сообщений: 550



А монитор может 512? biggrin.gif biggrin.gif biggrin.gif
Георгий
Отправлено: 09.04.2004, 22:03


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



Реальное время? под винды? забудь.

А так — если обновлять чарт 2-10 раз в секунду, то большую часть времени будет иллюзия отображения данных в реальном масштабе времени (до первой задумчивости виндов). при большом количестве точек (~1000 и больше) имеет смысл на графике показывать не все — например использовать вместо 10 точек одну, со значением = усреднённое значнию 10 точек.

а если без чарта, то можно рисовать прямо в окне используя вин апи — будет гораздо быстрее

или рисовать на канве какого-нибудь паинт бокса
Иван
Отправлено: 10.04.2004, 01:10


Машинист паровоза

Группа: Участник
Сообщений: 207



Согласен с Георгием,
Я бы брал усредненное значение 10-20 чисел.
Валентин
Отправлено: 10.04.2004, 20:24


Не зарегистрирован







С полностью real time я согласен, в Винде невозможно, но надо сделать хотя бы видимость этого, а с компонентом TChart это нельзя в принципе, так как пока он обновляется, даже если добавлять каждую 30 точку, то время обновления компонента превышает время подачи нового числа устройством и информация теряется, что недопустимо. Рисование на Canvas в принципе подходит, но там много недостатков, как стирание графиков при перерисовке окна . Так что если у кого есть идеи, пожалуйста поделитесь.
Valentin
joynter
Отправлено: 10.04.2004, 23:32


Станционный диспетчер

Группа: Участник
Сообщений: 137



а ежели использовать таймер?
Doga
Отправлено: 12.04.2004, 12:28


Мастер участка

Группа: Участник
Сообщений: 575



Сначала надо добиться чтобы не терялись входные данные. Очевидно без без специалного монитора, оформленного в виде потока TThread с высоким(возможно) приоритетом не обойтись. Задача этого монитора только получать и копить данные. Далее следует организовать второй поток который по мере возможности будет брать новые данные из первого потока и обновлять график. TChart действительно очень медлителен — это цена за универсальность. Попробуй поискать мене навороченные компоненты графиков. На данный момент могу посоветовать SGraph. Качать отсюда:

http://www.iae.nsk.su/~lab12/pod/prg_staf.htm

В хелпе есть пример для быстрого добовления точек(см QuickAddXY Example)

Вернуться в Вопросы программирования в C++Builder