j'ai un ( ou plusieurs ) composant(s) TChart avec un nombre relativement importants de series ( typiquement 20 )
chaque serie contient le même nombre de points qui est compris entre 1000 et 10'000.
en x : le temps, en Y les valeurs d'aquisitions, etat de relais, ...
à une fréquence f comprise entre 20 et 100 Hz, on aquière un nouveau point pour chaque canal et on 'laisse tomber' le point le plus ancien : scrolling horizontal.
Toutefois cela implique des ressources matérielle tres importantes. ( je ne sais pas comment une series S d'un Tchart T demande un repaint si on la change mais si elle le fait dans la boucle qui fait de scrolling cela devient épouventable!)
Quelqu'un aurait-il un code optimisé pour réaliser un code équivalent à mais
moins gourment en ressources!
Note : Peut-être le composant TChart n'est pas adapté et qu'un autre moyen est mieux ciblé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm1.Timer1Timer(Sender: TObject); // 1kHz begin inc(n); if n mod X =0 then // disiseur pour 20 a 100 Hz begin m:=0; for serie:=Serie_first to serie_last // ( # 20 series ) begin for i:=0 to serie.count-2 do begin serie.xvalue[i]:=serie.xvalue[i+1]; serie.yvalue[i]:=serie.yvalue[i+1]; end; serie.xvalue[serie.count-1].xvalue:=serie.xvalue[serie.count-2].xvalue + deltat; serie.Yvalue[serie.count-1].yvalue:= read_port(m); inc(m); end; end; end;
Partager