Forum: PC-Programmierung C# - Daten über Event? An Klasse übergeben


von Kiki (Gast)


Lesenswert?

Hallo,

ich lese Daten vom Seriellen Port in der Klasse SeriellPortInterface 
aus:

private void _serialPort_DataReceived(object sender, 
SerialDataReceivedEventArgs e)
{
      SerialPort sp = (SerialPort)sender;
      this.indata = sp.ReadExisting();
}

diese Daten möchte ich in einer RichTextBox ausgeben ausgeben.
Die Daten müssen also in die Klasse "public partial class SeriellData : 
Form"
gelangen.

Ich bin mir nicht sicher welcher EventHandler der richtige hierfür ist.
Mit Invoke bin ich bei der zusätzlichen Klasse nicht weiter gekommen.


Vielen Dank.

von nicht"Gast" (Gast)


Lesenswert?

In welcher Klasse ist denn deine Callback der seriellen?

Im Grunde kannst du dein eigenes Event in der Klasse erstellen und das 
abonnierst du dann in deiner Form Klasse.

siehe https://msdn.microsoft.com/de-de/library/8627sbea.aspx

von Kiki (Gast)


Lesenswert?

Vielen Dank für die Antwort.
Ich denke das ist der richtige Weg, welchen du vorgeschlagen hast.

"public class SampleEventArgs" ist in diesem Fall meine Form Klasse
und "public class Publisher" meine _seriellPort Klasse?

von Plopp (Gast)


Lesenswert?

Kiki schrieb:
> Vielen Dank für die Antwort.
> Ich denke das ist der richtige Weg, welchen du vorgeschlagen hast.
>
> "public class SampleEventArgs" ist in diesem Fall meine Form Klasse

Nicht ganz; per SampleEventArgs werden die Daten weitergegeben. Bei dir 
also der Text, der in der RichTextBox ausgegeben werden soll. Da passt 
das Beispiel sogar:
...
public String Text {get; private set;}
Es handelt sich also nur eine Art (meist sehr einfache) "Hilfsklasse", 
die die vom Publisher zum Subscriber transportierten Daten kapselt.

> und "public class Publisher" meine _seriellPort Klasse?

Ja. Du hast also drei Komponenten: Deine Form (der "Subscriber", 
welcher in dem Beispiel fehlt), _seriellPort (der Publisher) sowie deine 
von EventArgs abgeleitete Klasse. Der Subscriber meldet sich beim 
Publisher an und erhält dann später - eben wenn Events auftreten - 
jeweils über eine Instanz deiner EventArgs-Subklasse die nötigen 
Informationen (in deinem Fall also einen String, den du in der Textbox 
anzeigen lassen kannst).
Es ginge auch ganz ohne eigene EventArgs-Subklasse, allerdings lassen 
sich dann keine spezifischen Infos mitschicken (man weiß dann bloß, dass 
ein Event aufgetreten ist, was manchmal ja ausreicht).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.