Mam jeszcze jedno pytanie odnośnie kopiowania narysowanej bmp na PaitBoxa - w którym to momęcie najlepiej to robić i w której klasie ?? ...
Pytanie jest trochę dla mnie niezrozumiałe. Cokolwiek rysujesz w
PainBox musisz to robić w zdarzeniu
OnPaint w przeciwnym razie wszystko będzie wymazywane podczas odświeżania.
Z początku myślałem, o TImerze który będzie sprawdzał status flagi odpowiedzialnej za kopiowanie ( bo kopiowac można np co 2 pomiary - 200[ms] ).
Tego to już wogóle nie rozumiem. Pisząc o fladze masz oczywiście na myśli jakąś zmienną typu
boolean. Co do interwału pomiarów to oczywiście można ustawić to w
Timer'ze, ale pomiar czasu zegara będzie zakłócany przez procesy działające w systemie, więc nie będzie dokładny, chyba, że go zsynchronizujesz z zegarem
bios'u, ale dla tak małego przedziału czasu cykliczne wyświetlanie wyników pomiarów może stanowić problem.
jeżeli będe miał bufor np. 25mb i będe chciał ścisnąć wykres bardzo mocno - tak aby wszystkie dane zobaczeć na 1 ekranie co spowoduje ogromną ilość pomiarów na 1 pixel i malowanie zabije transmisje szeregową - wszystko zwolni.
W takim wypadku może się zdarzyć, że proces zaangażuje w całości procesor i nie będzie można wykonać innych operacji, by temu zapobiec, być może trzeba by taki proces uruchomić z niskim priorytetem:
- Kod: Zaznacz cały
MyThread = new TMyThread(this);
MyThread->Priority = tpLowest;
- Kod: Zaznacz cały
enum TThreadPriority{
tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest, tpTimeCritical };