Wodurch wird das DataReceived-Ereignis der .NET SerialPort-Klasse ausgelöst?

Ich verstehe aus den MSDN-Dokumenten, dass das Ereignis DataReceived nicht unbedingt einmal pro Byte ausgelöst wird.

Aber weiß jemand, was genau der Mechanismus ist, durch den das Ereignis ausgelöst wird?

Startet der Empfang jedes Bytes einen Zeitgeber neu, der beispielsweise 10 ms zwischen Bytes erreichen muss, bevor das Ereignis ausgelöst wird?

Ich frage, weil ich versuche, eine App zu schreiben, die XML-Daten liest, die von einer seriellen Schnittstelle eingehen.

Da mein Laptop keine seriellen Anschlüsse hat, verwende ich einen virtuellen Emulator für serielle Anschlüsse. (Ich weiß, ich weiß - ich kann nichts dagegen tun ATM).

Wenn ich Daten über den emulierten Port an meine App übergebe, wird das Ereignis für jeden XML-Datensatz (ca. 1500 Byte) einmal ausgelöst. Perfekt. Wenn ein Kollege in einem anderen Büro es jedoch mit zwei Computern versucht, die über ein Kabel miteinander verbunden sind, wird das DataReceived-Ereignis nach etwa 10 Byte XML wiederholt ausgelöst, wodurch die App vollständig deaktiviert wird.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage