SerialPort DataRecieved Event
-
Hallo,
ich hoffe ihr könnt mir helfen.Ich habe ein SerialPort geöffnet, über den sende ich einen Befehl und warte bis DataRecieved aufgerufen wird. Dann lese ich die ankommenden Daten mit ReadExisting und die ankommenden Daten muss ich dann verarbeiten. Leider kommen die Daten nicht direk komplett sonder erst ein teil, und dann kann ich den Response nicht richtig verarbeiten. Die restlichen Daten werden erst beim nächsten Aufruf von DataRecived übermittelt. Kann ich den SerialPort so einstellen, das erst das DataRecieved Event aufgerufen wird wenn alle Daten vorhanden sind? Oder habt Ihr andere Vorschläge?
Hier noch der Code zu meinem Eventhandling.
private void OnPortReciveData(object sender, SerialDataReceivedEventArgs e) { string response = string.Empty; do { response += m_Port.ReadExisting(); } while (m_Port.BytesToRead > 0); HandleResponse(response); }
-
Sammel doch einfach solange Daten bis die Antwort komplett ist
-
Mit m_Port.ReceivedBytesThreshold kannst Du angeben wieviele Bits er sammeln sollte bis er das Event auslöst.
Oder du machst einfach ein Thread.Sleep() nach jedem Schreiben, oder vor dem lesen, damit alles ankommen kann.