Hallo!
Ich habe folgende Problemstellung: Eine über einen virtuellen, seriellen COM-Port wird ein Programm mit Daten versorgt. Die kommen recht häufig (ca. alle 10ms) mit einer Baudrate von 128kBaud. Jedes Byte löst ein Event aus, liest das Datum und speichert es in ein Array.
In größeren Abständen (alle 100ms) werden die Daten grafisch in ein Fenster gezeichnet. Das kann man sich wie das Bild eines Oszilloskops vorstellen. Die Funktion, die das Bild des Fensters zeichnet, greift auf dasselbe Array zu, in das aus der Klasse für die serielle Schnittstelle geschrieben wird.
Das Programm läuft momentan unter Java recht zufriedenstellend. Die serielle Kommunikation und die Klasse für das Grafikfenster laufen in verschiedenen Threads.
Nun zu meiner Frage:
Ich möchte das Programm in C++ schreiben und nutze dafür die VC++ Express Edition. Dort gibt es die Klasse SerialPort und ich möchte eine einfache Windows-Forms Anwendung erstellen, die im Prinzip dasselbe macht wie das bereits existierende Java-Programm.
Ich würde gern erfahren, wie eure Erfahrungen mit einer solchen Problemstellung sind. Mit welchem Konzept würdet ihr dies in C++ umsetzen, insbesondere das Handling der Daten? Worauf muss ich besonders achten, wenn ich Daten, die in einem Thread erzeugt werden, in einer GUI zeichnen möchte, ohne dass es zu Problemen kommt (verschluckte Zeichen, zu langsame Datenübertragung usw…)?
Ich frage deshalb, weil ich bisher in erster Linie mit Java beschäftigt war, und die Besonderheiten bei so etwas in C++ nicht gut genug kenne.
Wie man generell mit der Klasse SerialPort umgeht ist mir bekannt, aber bekanntlich gibt es ja viele Wege nach Rom, manche sind nur etwas steiniger als andere (wenn man nicht den richtigen kennt)…
Was hättet ihr für Ideen, wie man dies geschickt umsetzen könnte?
Vielen Dank im Voraus für eure Antworten!
Gruß
Michael