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!
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;
Note : Peut-être le composant TChart n'est pas adapté et qu'un autre moyen est mieux ciblé.