[Gelöst] TChart mit Zeitachse (Lazarus 0.9.31)
-
- Beiträge: 16
- Registriert: Do 16. Jul 2009, 16:16
- OS, Lazarus, FPC: Win XP und Win2000 (L 1.1 FPC 2.6.1)
- CPU-Target: xxBit
[Gelöst] TChart mit Zeitachse (Lazarus 0.9.31)
Hallo!
Irgendwie stehe ich auf dem Schlauch. Ich möchte ein Chart erstellen, in dem Messwerte auf einer Zeitachse dargestellt werden.
In den Beispielen der Komponente TaChart ist zwar ein Beispiel mit Zeitachse, aber als Datenlieferant sind Zufallswerte angegeben.
Und hier sehe ich den Wald vor lauter Bäumen nicht mehr:
Wie kann ich selber die Daten bestimmen?
Danke für die Hilfe
Thomas
Irgendwie stehe ich auf dem Schlauch. Ich möchte ein Chart erstellen, in dem Messwerte auf einer Zeitachse dargestellt werden.
In den Beispielen der Komponente TaChart ist zwar ein Beispiel mit Zeitachse, aber als Datenlieferant sind Zufallswerte angegeben.
Und hier sehe ich den Wald vor lauter Bäumen nicht mehr:
Wie kann ich selber die Daten bestimmen?
Danke für die Hilfe
Thomas
Zuletzt geändert von Hallenberger am Do 7. Apr 2011, 10:27, insgesamt 2-mal geändert.
-
- Beiträge: 619
- Registriert: Mi 9. Mär 2011, 16:34
- OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
- CPU-Target: 64Bit
- Wohnort: seit 01.06.2011 in Wahlstedt
Re: TaChart mit Zeitachse (Lazarus 0.9.31)
Hört sich verdammt nach MSR an. kannst ggf, den code uploaden?Hallenberger hat geschrieben:Hallo!
Irgendwie stehe ich auf dem Schlauch. Ich möchte ein Chart erstellen, in dem Messwerte auf einer Zeitachse dargestellt werden.
In den Beispielen der Komponente TaChart ist zwar ein Beispiel mit Zeitachse, aber als Datenlieferant sind Zufallswerte angegeben.
Und hier sehe ich den Wald vor lauter Bäumen nicht mehr:
Wie kann ich selber die Daten bestimmen?
Danke für die Hilfe
Thomas
Dann stellt sich auch schon die Frage, wo du deine Daten, welche du auswerten möchtest herbeziehen willst. Auch diese info wäre im allg. Sehr wichtig.
Zuletzt geändert von Maik81ftl am Mi 6. Apr 2011, 11:17, insgesamt 1-mal geändert.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache
und der Kreis Segeberg meine LIEBE 


-
- Beiträge: 16
- Registriert: Do 16. Jul 2009, 16:16
- OS, Lazarus, FPC: Win XP und Win2000 (L 1.1 FPC 2.6.1)
- CPU-Target: xxBit
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Hallo!Maik81ftl hat geschrieben: Hört sich verdamt nach MSR an. kannst ggf, den code uploaden?
Dann stellt sich auch schon die Frage, wo du deine Daten, welche du auswerten möchtest herbeziehen willst. Auch diese info wäre im allg. Sehr wichtig.
Was ist MSR? (Messen, Steuern, Regel vielleicht? ja darum geht es im weitesten Sinne).
Ich habe ein TChart auf meinem Form, darauf z.B. ein Listchartsource und ein DateTimeIntervallSource.
Meine Frage ist nun, wie bringe ich dem Chart bei, die X-Achse als Zeitstrahl zu interpretieren?
-
- Beiträge: 354
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Hhmm,
mir fällt da jetzt auf die Schnelle ein Weg über Array's ein.
Ein Array für die x-Werte und eines für die y-Werte.
Die Größe der Arrays bestimmst Du aus der Absolutzeit z.B. 10 s die Du auf der x-Achse darstellen willst. Wenn Dein Timer-Intervall z.B. auf 0,1 s steht dann müssen die Array's 10/0,1 = 100 Elemente fassen können. Das x-Array beginnt bei t=0 und es adiert sich immer das Abtastintervall. Im y-Array wird der Messwert abgelegt. Dann mit For-Schleife y über x im TChart darstellen.
Das wäre jetzt mal ein spontaner Gedanke von mir.
Gruß
Volker
Kannst natürlich die Messwerte auch mit Scilab erfassen. Es gibt hier eine DLL um Zugriff auf die Serielle Schnittstelle zu erhalten. Die in Scilab Einbinden und los geht's. Oder Du schreibst Dir die DLL selbst mit Win-API-Funktionen zum Schnittstellenzugriff (sofern Du Windows benutzt, aber Linux ist vermutlich ähnlich). Im Buch "Delphi 6 in Team" gibt es (für Windows) dazu Erklärungen...
mir fällt da jetzt auf die Schnelle ein Weg über Array's ein.
Ein Array für die x-Werte und eines für die y-Werte.
Die Größe der Arrays bestimmst Du aus der Absolutzeit z.B. 10 s die Du auf der x-Achse darstellen willst. Wenn Dein Timer-Intervall z.B. auf 0,1 s steht dann müssen die Array's 10/0,1 = 100 Elemente fassen können. Das x-Array beginnt bei t=0 und es adiert sich immer das Abtastintervall. Im y-Array wird der Messwert abgelegt. Dann mit For-Schleife y über x im TChart darstellen.
Das wäre jetzt mal ein spontaner Gedanke von mir.
Gruß
Volker
Kannst natürlich die Messwerte auch mit Scilab erfassen. Es gibt hier eine DLL um Zugriff auf die Serielle Schnittstelle zu erhalten. Die in Scilab Einbinden und los geht's. Oder Du schreibst Dir die DLL selbst mit Win-API-Funktionen zum Schnittstellenzugriff (sofern Du Windows benutzt, aber Linux ist vermutlich ähnlich). Im Buch "Delphi 6 in Team" gibt es (für Windows) dazu Erklärungen...
-
- Beiträge: 16
- Registriert: Do 16. Jul 2009, 16:16
- OS, Lazarus, FPC: Win XP und Win2000 (L 1.1 FPC 2.6.1)
- CPU-Target: xxBit
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Danke Volker für Deine 'Antwort.
Aber ich glaube, ich habe mich immer noch mißverständlich ausgedrückt: Mein Problem ist nicht die eigentliche Datenerfassung (das ist alles schon seit längerem gelöst: Erfassung über Seriell, TCP, aus Binär-Datei, aus CSV-Datei etc).
Meine Frage ist viel einfacher: Wie kann ich bei einem Chart eine Achse als Zeitachse benutzen? Dafür ist wohl die Komponente DateTimeIntervalSource zuständig. Bei den Beispielen ist ach eine solche verwendet, allerdings werden die Zeit-Werte dort über eine RandomChartSource erzeugt. Mir gelingt es nun nicht dieses Beispiel so zu verstehen und zu verändern, daß ich selbst die entsprechenden Daten in das Chart bekomme.
Also noch ein Versuch: Gegeben sind Werte-Paare (Ein (integer oder float)-Wert und ein Zeitwert). Diese liegen vor. Was muß ich jetzt machen, damit diese jetzt im Chart dargestellt werden? Und zwar so, daß die X-Achse den Zeitwert auch als solchen darstellt?
Danke
Thomas
Aber ich glaube, ich habe mich immer noch mißverständlich ausgedrückt: Mein Problem ist nicht die eigentliche Datenerfassung (das ist alles schon seit längerem gelöst: Erfassung über Seriell, TCP, aus Binär-Datei, aus CSV-Datei etc).
Meine Frage ist viel einfacher: Wie kann ich bei einem Chart eine Achse als Zeitachse benutzen? Dafür ist wohl die Komponente DateTimeIntervalSource zuständig. Bei den Beispielen ist ach eine solche verwendet, allerdings werden die Zeit-Werte dort über eine RandomChartSource erzeugt. Mir gelingt es nun nicht dieses Beispiel so zu verstehen und zu verändern, daß ich selbst die entsprechenden Daten in das Chart bekomme.
Also noch ein Versuch: Gegeben sind Werte-Paare (Ein (integer oder float)-Wert und ein Zeitwert). Diese liegen vor. Was muß ich jetzt machen, damit diese jetzt im Chart dargestellt werden? Und zwar so, daß die X-Achse den Zeitwert auch als solchen darstellt?
Danke
Thomas
-
- Beiträge: 16
- Registriert: Do 16. Jul 2009, 16:16
- OS, Lazarus, FPC: Win XP und Win2000 (L 1.1 FPC 2.6.1)
- CPU-Target: xxBit
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Hallo!
So, ich glaube, ich habe die Lösung für mein Problem gefunden. War natürlich ganz einfach, wenn man drauf kommt.
Für alle, die vielleicht vor einem ähnlichen Problem stehen, hänge ich mal ein Minimalbeispielprojekt an.
So, ich glaube, ich habe die Lösung für mein Problem gefunden. War natürlich ganz einfach, wenn man drauf kommt.
Für alle, die vielleicht vor einem ähnlichen Problem stehen, hänge ich mal ein Minimalbeispielprojekt an.
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Merci, Lösung im Beispielprojekt war sehr hilfreich.Hallenberger hat geschrieben: ...
Für alle, die vielleicht vor einem ähnlichen Problem stehen, hänge ich mal ein Minimalbeispielprojekt an.

-
- Beiträge: 16
- Registriert: Do 16. Jul 2009, 16:16
- OS, Lazarus, FPC: Win XP und Win2000 (L 1.1 FPC 2.6.1)
- CPU-Target: xxBit
Re: TChart mit Zeitachse (Lazarus 0.9.31)
Hallo!rain hat geschrieben:Merci, Lösung im Beispielprojekt war sehr hilfreich.Hallenberger hat geschrieben: ...
Für alle, die vielleicht vor einem ähnlichen Problem stehen, hänge ich mal ein Minimalbeispielprojekt an.
Freut mich, daß das Beispiel hilfreich war.