Forum: PC-Programmierung RS232 Empfang am PC in Visual C


von Martin (Gast)


Lesenswert?

Guten morgen,

Ich beschäftige mich gerade mit Visual Studio C++ und will über RS232 
mit meinem µC Daten hin und herschieben.
Nun ist aber meine Frage, woher weiß der PC, das etwas auf der 
Datenleitung liegt bzw. wie mache ich das, dass er kein Empfang 
verpasst. Beim µC geht mir nichts verloren durch ein Interrupt, dass 
gesetzt wird.

Wie sieht es aber beim PC aus?
Arbeitet die Funktion
1
 serialPort1.ReadExisting();
 auch quasi wie im Interrupt?

Danke.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Auf dem PC läuft ein Betriebssystem. Das verwendet Devicetreiber, und 
die kümmern sich um das Abwickeln von Interrupts etc.
Das Betriebssystem verwaltet Empfangspuffer, in den empfangene Daten 
eingetragen werden; Deine Funktion "ReadExisting" greift auf diesen 
Puffer zu. Und korrespondierend gibt es auch einen Sendepuffer, in den 
Schreibzugriffe die zu sendenden Daten eintragen, der Devicetreiber 
leert interruptgesteuert diesen Puffer und überträgt die Daten an die 
Schnittstellenhardware.

Sofern Du also den Empfangspuffer ausreichend oft ausleerst, gehen auch 
keine empfangenen Daten verloren. Die Größe des Puffers lässt sich über 
Win32-API-Aufrufe konfigurieren, die Füllrate ist Dir bekannt, da sie 
direkt von der Baudrate abhängt.

von Karl H. (kbuchegg)


Lesenswert?

Zusätzlich gibt es dann noch in Windows das Message-System, in dem 
Windows einem Programm eine Message schicken kann: "Jetzt ist was an der 
Seriellen eingetroffen. Hol es dir mal bei Gelegenheit ab."

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.