C # Nur lesen Serieller Port, wenn Daten ankommen

8

Ich möchte meine serielle Schnittstelle lesen, aber nur wenn Daten kommen (ich will nicht polling).

So mache ich es.

%Vor%

Und dann starte ich einen Thread

%Vor%

und in meiner readCom lese ich kontinuierlich (polling :()

%Vor%

Ich möchte, dass Sie lesen, wenn ein Interrupt kommt. Aber wie kann ich das tun?

    
user2261524 25.04.2013, 13:13
quelle

2 Antworten

31

Sie müssen dem Ereignis DataReceived einen eventHandler hinzufügen.

Im Folgenden finden Sie ein Beispiel von msdn.microsoft.com mit einigen Änderungen: Kommentare anzeigen !:

%Vor%

Jedes Mal, wenn Daten eintreffen, löst der DataReceivedHandler aus und gibt Ihre Daten an die Konsole aus. Ich denke, du solltest das in deinem Code machen können.

    
Eric Smekens 25.04.2013, 13:14
quelle
5

Sie müssen das DataReceived-Ereignis abonnieren, bevor Sie den Port öffnen, und dann dieses Ereignis anhören, wenn es ausgelöst wird.

%Vor%

Seriell, wenn Daten im Puffer vorhanden sind, wird das Datenempfangsereignis ausgelöst. Dies bedeutet nicht, dass Sie alle Ihre Daten gleichzeitig erhalten haben. Möglicherweise müssen Sie mehrere Male warten, um alle Ihre Daten zu erhalten. Dies ist, wo Sie die empfangenen Daten getrennt verarbeiten müssen, vielleicht behalten Sie sie im Cache, bevor Sie die endgültige Verarbeitung durchführen.

    
Jegan 25.04.2013 13:27
quelle

Tags und Links