Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Teechart kontiunierlich (https://www.delphipraxis.net/174881-teechart-kontiunierlich.html)

progopa 16. Mai 2013 06:30

Teechart kontiunierlich
 
Noch eine Frage zum Teechart.
Ich möchte Messwerte kontinuierlich in einer Teechart Serie darstellen.

Der Vorgang sähe also so aus.
Delphi-Quellcode:
Chart1.BottomAxis.Automatic := False;
Chart1.BottomAxis.Maximum := 60;// 60 Sekunden dargestellt
for i := 1 to 60 do
  Serie.Addxy(i,0);  // Fülle mit 0 Werten
Dann mit dem Eintreffen jedes Messwertes werden alle vorhandenen Werte 1 Stelle nach links verschoben
und der Messwert angehängt:

Delphi-Quellcode:
for i := 1 to 59 do
  Serie.Value[i] := Serie.Value[i+1];

und dann
Serie.Value[60] := neuer Wert;
Weis wer, ob es in Teechart dafür eine fertige Funktion gibt?

Gruß Peter

Bummi 16. Mai 2013 06:46

AW: Teechart kontiunierlich
 
Du kannst die Automatik für Minimum ebenfalls abschalten und den angezeigten Bereich durch setzen von Minimum verschieben. Wenn nötig kannst Du die Werte von vorne her auch löschen
Delphi-Quellcode:
Chart1.Series[0].Delete(0);
in jedem Fall wirst Du Minimum und Maximum bei überschreiten der 60 Sekunden bei jedem hinzufügen um 1 erhöhen müssen um die gewünschte Darstellung zu erhalten.

v2afrank 16. Mai 2013 09:36

AW: Teechart kontiunierlich
 
Die Series AfterAdd Methode dürfte die richtige für Dich sein
Delphi-Quellcode:
procedure Series1AfterAdd(Sender: TChartSeries;
  ValueIndex: Integer);

var
 step:Double;
  begin

    step:=DateTimeStep[dtOnesecond]*Anzahlsekunden;
     With Sender.GetHorizAxis do { <-- with the Horizontal Axis... }
     Begin
      Automatic := False;
      //always show the last time
      Maximum := Sender.XValues.MaxValue;
      // show only last desired interval
      Minimum := Maximum - step;
     end;
     // Delete all "invisible" points
     While (Sender.Count>0) and
      (Sender.XValues[0] < Sender.GetHorizAxis.Minimum) do
      Sender.Delete(0);

end;

progopa 16. Mai 2013 09:41

AW: Teechart kontiunierlich
 
Danke für die Tips.
Ich habe das jetzt so gelöst:

Delphi-Quellcode:
procedure TChartData.SerieAdd(Value: Single);
begin
  if Assigned(ScopeSerie) then
  begin
    ScopeSerie.Delete(0);
    Chart.BottomAxis.Maximum := Chart.BottomAxis.Maximum + 1;
    Chart.BottomAxis.Minimum := Chart.BottomAxis.Minimum + 1;
    ScopeSerie.AddXY(Chart.BottomAxis.Maximum, Value);
  end;
end;

procedure TChartData.SerieInit(Serie: TChartSeries; Title: string; MaxX, MaxY: Integer; Color: TColor);
var
  i : Integer;
begin
  Chart.BottomAxis.Automatic := False;
  Chart.BottomAxis.Maximum  := MaxX;
  Chart.BottomAxis.Minimum  := 1;
  Chart.LeftAxis.Automatic  := False;
  Chart.LeftAxis.Maximum    := MaxY;
  ScopeMin := 1;
  ScopeMax := MaxX;
  Serie.Color := Color;
  ScopeSerie := Serie;
  Chart.Title.Caption := Title;
  for i := 1 to MaxX do
    Serie.AddXY(i,0);
end;
Gruß Peter

Der schöne Günther 16. Mai 2013 09:43

AW: Teechart kontiunierlich
 
Ist das Ding so schlau, dass dem nach ein paar Tagen nicht der Speicher ausgeht weil er sich die ganzen nicht angezeigten Messwerte noch merkt? Ich wollte neulich auch die letzten x Sekunden von Messwerten in einem TeeChart anzeigen lassen und habe lieber immer den ältesten Wert gelöscht und dann hinten wieder einen neuen angefügt...

Uwe Raabe 16. Mai 2013 10:30

AW: Teechart kontiunierlich
 
Zitat:

Zitat von Bummi (Beitrag 1215477)
Wenn nötig kannst Du die Werte von vorne her auch löschen
Delphi-Quellcode:
Chart1.Series[0].Delete(0);
in jedem Fall wirst Du Minimum und Maximum bei überschreiten der 60 Sekunden bei jedem hinzufügen um 1 erhöhen müssen um die gewünschte Darstellung zu erhalten.

Ist es nicht so, daß beim Delete(0) die Indizes der folgenden Einträge automatisch um 1 erniedrigt werden? Dann können die Einstellungen für Min/Max doch eigentlich so bleiben, oder?

Bummi 16. Mai 2013 11:06

AW: Teechart kontiunierlich
 
Die X-Werte stehen ja trotzdem drin 1.2.3.4... wenn ich den ersten lösche habe ich 2.3.4... muss also MIN anpassen um kein Loch zu bekommen.

Der schöne Günther 16. Mai 2013 11:34

AW: Teechart kontiunierlich
 
Vielleicht ist das doch gerade bei Messwerten gewollt? Auf der X-Achse trägt man doch eher die Zeit ein, und gerade das schiebt sich ja... Zumindest hatte ich das so gemacht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz