Serialport Klasse - DataReceived Event soll nach jedem Zeichen feuren

11/01/2010 - 16:27 von Holger Vorberg | Report spam
Hallo zusammen,

wie bekomme ich die Serialport Klasse dazu, dass der DataReceived Event
nach jedem einzeln Zeichen feuert, dass über die COM Schnittstelle
reinkommt?

Ich hàtte vermutet, dass ReceivedBytesThreshold = 1 dafür sorgt. Ist
aber nicht der Fall.
 

Lesen sie die antworten

#1 Thomas Scheidegger
12/01/2010 - 12:56 | Warnen spam
Hallo Holger

Serialport Klasse ..
DataReceived Event nach jedem einzeln Zeichen feuert
...vermutet, dass ReceivedBytesThreshold = 1 dafür sorgt.



Serielle Ports unter PC/Windows/.NET unterliegen
diversen Bufferungen und Timings,
hard-&software-seitig!
Beginnend etwa typ. mit den FIFOs einer 16550-like UART.
Diese FIFO's kann man oft im Windows Geràte-Manager pro COM-Port
einstellen, andere Buffer/Timings (teils im device-driver/kernel) nur
bedingt.
(und managed .NET-Code garantiert keine [Echt-]Zeiten!)

Beachte, bei höheren Baudraten bedeutet ein tiefer Rx-Pegel
viele IRQs/Events, sprich mehr CPU-Last (bzw Verzögerung anderer Tasks).
Daher sollte man für höheren Datendurchsatz
die Bufferungen default/aktiv lassen und die eigene Empfangs-Logik
auf die Verarbeitung von >1 Byte aufs mal auslegen
(Optimum hàngt von Cumstom Protokoll ab, braucht zT etliches an KnowHow)


Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen