Laden...

serialport wann wird Datareceived_Event ausgelöst?

Erstellt von Rockpriest vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.340 Views
R
Rockpriest Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren
serialport wann wird Datareceived_Event ausgelöst?

Hey zusammen,

ich habe ein Problem. Ich sende Daten von meinem Microcontroller über RS232 an meinen Rechner und will diese dort auswerten.

Jetzt gibt es doch das Datareceived Event. Jetzt meine Frage: Wann wird dieses denn genau ausgelöst?

Ich habe zum Test mit einem kleinen Testprogramm vom Laptop aus Daten an den Rechner geschickt und wenn ich es richtig verstanden habe, hat es das Event dann ausgelöst wenn CR empfangen wurde? Sehe ich das richtig? Und wenn ja, kann ich das irgendwie verändern? Dass er z.Bsp. immer dann in die Interruptroutine springt, wenn 1 Byte empfangen wurde?

Vielen Dank für eure Hilfe schon einmal im Voraus!

Gruß Stefan

R
Rockpriest Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren

Weiß das denn niemand von euch?!? Bin sonst wirklich aufgeschmissen...

Gruß Stefan

L
770 Beiträge seit 2006
vor 17 Jahren

lg Lion

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von Rockpriest
Jetzt gibt es doch das Datareceived Event. Jetzt meine Frage: Wann wird dieses denn genau ausgelöst?

Irgendwann nachdem mindestens ein Zeichen eingetroffen ist. Zudem muss der verarbeitende Thread auch genug Zeit bekommen, den Event auszulösen. Betonung liegt auf Irgendwann. Deterministisches Verhalten wie bei einem µC kannst du vergessen. Wenn du genau auf 1 Zeichen warten willst, dann musst du mit Read() arbeiten. Ändert aber nix an der Latenz.

R
Rockpriest Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren

Hallo Svenson,

vielen Dank für deine Antwort. Ja das mit den Threads ist mir schon klar. Was ich jetzt herausgefunden habe, was auch zu deiner Aussage passt: Wenn ich beispielsweise schreibe:


port.write("A")

Dann geht es manchmal 2 Sekunden, manchmal 4 usw. bis das Event ausgelöst wird. Wenn ich aber schreibe


port.write("A\n")

Dann wird das Event an meinem Laptop sofort ausgeführt! Kann das sein oder habe ich etwas falsch eingestellt, dass ich zusätzlich immer noch ein LF hintendran senden muss?

Gruß

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich vermute eher, dass das eine Eigenart der Klasse ist. Da die serielle Kommunikation oftmals textuell und zeilenweise erfolgt, macht es Sinn, mit dem Abschluss einer Zeile sofort die Daten weiter zu geben.
Die Frage ist eher, warum die Klasse sich sonst so nicht-deterministisch verhält.
Auf jeden Fall hast du ja eine relativ einfache Lösung des Problems gefunden.

R
Rockpriest Themenstarter:in
82 Beiträge seit 2006
vor 17 Jahren

jupp, hab halt gedacht vielleicht gibts ne elegantere Lösung, aber funktioniert so ja auch.

Trotzdem Danke für eure Hilfe!

Gruß Stefan