Frage zur seriellen Kommunikation (MSComm32.ocx)

23/07/2008 - 08:20 von Susann Markward | Report spam
Hallo,

bei der Implementierung einer Ereignis-gesteuerten Kommunikation über
RS232 legt der Wert RThreshold fest, wie viele Zeichen im Empfangspuffer
angekommen sein sollen, bevor das Kommunikation-Steuerelement die
CommEvent-Eigenschaft auf comEvReceive festlegt und ein OnComm-Ereignis
auslöst.

Das heißt doch, dass, wenn ich RThreshold auf 1 setze, nach *JEDEM*
empfangenen Zeichen ein solches Ereignis ausgelöst wird - oder?

Warum sehe ich dann bei

Select Case MSComm1.CommEvent
Case comEvReceive
EingangsBuffer = EingangsBuffer + "|" + MSComm1.Input
End Select

nicht ein "|" nach *JEDEM* Zeichen im EingangsBuffer, sondern nur nach
jedem 8. empfangenen Zeichen?

Wo ist mein Denkfehler?

MfG
Susann
 

Lesen sie die antworten

#1 Susann Markward
23/07/2008 - 08:42 | Warnen spam
Bei diesen Einstellungen:

MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InBufferSize = 1
MSComm1.OutBufferSize = 1
MSComm1.InputLen = 0

bekomme ich das "|" nach jedem achten Zeichen. Ändere ich die InputLen
auf 1 (also mit folgenden Einstellungen)

MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InBufferSize = 1
MSComm1.OutBufferSize = 1
MSComm1.InputLen = 1

bekomme ich, wie gewünscht, nach jedem Zeichen mein "|".

Das verstehe ich nicht. Wenn InputLen=0 ist, soll doch der gesamte
InBuffer eingelesen werden. Da dieser nur 1 Byte groß ist, sollte
eigentlich auch dort (o.g.) nach jedem Zeichen ein "|" eingefügt werden.

Warum klappt das nicht?

Ähnliche fragen