Hi,
woher kommt denn dein Signal? Also ich meine jetzt nur die Schnittstelle, über die du es einliesst.
Es gibt hier zwei Möglichkeiten, die unterschiedliche Ansätze mit sich bringen, der Weg von Toxman bietet sich natürlich an, wenn du die Daten selbst abholen musst. Hast du also eine asynchrone Kommunikation, so kannst du mit dem TTimer Objekt einen Timer erstellen. Dieser führt in einem gewissen Intervall eine beliebige Funktion aus.
Hast du hingegen eine Benachrichtigung (z.B. eine Callback-Methode), die automatisch aufgerufen wird, musst hier nur noch für das Zeichnen des Graphen sorgen.
Das Zeichnen kannst du am leichtesten mit dem TChart Objekt realisieren. Dies ist eine Komponente die zumindest in den nicht persönlichen Versionen beiliegen sollte. Seit welcher Version und wie es mit den Personals aussieht kann ich nicht sagen. Jedenfalls findet man auch eine freie Version zum Download (die dann aber beim Start auf ihren Hersteller hinweist). Solltest du die Komponente nicht finden (liegt im Tab Zusätzlich, so ein Tortendiagramm in Rot, Blau, Gelb, Grün), lohnt es sich auf jeden Fall mal die Testversion auszuprobieren.
Die Komponente ist sehr praktisch (und sehr Umfangreich). Hier alles zu erklären würde etwas dauern, zum Glück ist sie in vielem Selbsterklärend. Was sie eigentlich macht ist, Charts zu zeichnen. Der klare Vorteil ist, dass sie nur dafür gemacht wurde. Du kannst sehr einfach ein Diagramm deinen Bedürfnissen anpassen. Es wird autom. skaliert, du kannst eine Logarithmische oder halblogarithmische Darstellung wählen, Legenden verwenden, Mehrachsig arbeiten (z.B. einmal linear und einmal log. aufgetragen), ....
Was du für dein Diagramm tun müsstest ist eigentlich nur eine TChartSeries hinzufügen. Dies ist einfach der Diagrammtyp. Bei einer Cosinusfunktion wird sich sicherlich kein Balkendigramm anbieten. Hast du eine Series eingefügt, kannst du nun im Programm einfach mittels addXY(X, Y) einen Wert diesem Diagram (der Series) hinzufügen. Das TChart Objekt kümmert sich um das Zeichnen und skalieren der Anzeige.
Sicherlich kannst du das auch per Hand mit einer Bitmap machen, aber der Aufwand wäre hier doch erheblich höher (und würde sich
imho kaum lohnen).
Gruß Der Unwissende