Hallo, ich tüftele nun schon seit einiger Zeit an einem kleinen Programm herum, das auf den seriellen Port zugreift.
Ich verwende Windows 7, Visual Basic 2010 Express und einen RS232-USB-Konverter.
Alles konzentriert sich momentan auf die Frage, wann denn nun genau ein "DataReceived"-Ereignis ausgelöst wird.
Die Microsoft-Hilfe ist hier auch nicht besonders aussagekräftig, da heißt es: "DataReceived event is not guaranteed to be raised for every byte received.">Das DataReceived-Ereignis wird nicht unbedingt für jedes empfangene Byte ausgelöst."
Tja, wann denn nun? Mir gehen immer Daten verloren, wenn ich versuche, einen String einzulesen, dessen Ende aus einer ASCII-000 besteht.
Danke im Voraus...
Der Stille Beobachter.
Ich verwende Windows 7, Visual Basic 2010 Express und einen RS232-USB-Konverter.
Alles konzentriert sich momentan auf die Frage, wann denn nun genau ein "DataReceived"-Ereignis ausgelöst wird.
Die Microsoft-Hilfe ist hier auch nicht besonders aussagekräftig, da heißt es: "DataReceived event is not guaranteed to be raised for every byte received.">Das DataReceived-Ereignis wird nicht unbedingt für jedes empfangene Byte ausgelöst."
Tja, wann denn nun? Mir gehen immer Daten verloren, wenn ich versuche, einen String einzulesen, dessen Ende aus einer ASCII-000 besteht.
Danke im Voraus...
Der Stille Beobachter.
Visual Basic-Quellcode
- Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
- ' Alle verfügbaren Bytes aus dem seriellen Eingabepuffer lesen
- For i = 0 To SerialPort1.BytesToRead
- Try
- StringBuffer &= SerialPort1.ReadByte
- StringBuffer &= ", "
- Catch ex As Exception
- MsgBox("Error receiving data", vbExclamation, "Error")
- End Try
- Next
- ' Stringende anhängen
- StringBuffer &= vbNull
- ' Neue Daten vorhanden
- NewSerialFrameReceived = 1
- End Sub