Hallo,
ich kommuniziere mit einen µC über die serielle Schnittstelle. Dabei
werden mehrere Datenpakte gesendet. Der relevante Codeaussschnitt sieht
so aus:
1 | With myMSCom
|
2 | If .PortOpen = False Then .PortOpen = True
|
3 | dummy = .Input ' Lesebuffer leeren
|
4 | .Output = Chr(bytData1) & Chr(bytData2) & Chr(13)
|
5 | Do
|
6 | Loop Until .InBufferCount > 2 'drei Byte werden erwartet
|
7 | strResponse = .Input
|
8 | End With
|
Die Funktion ist damit gewährleistet und dauert ca. 15ms je Paket.
ABER: Da ich ca. 10 Datenpakete schicke, Summiert sich die
Kommunikationsdauer auf ca. 150ms. Mit dem Oszilloskop gemessen dauer
aber ein Paket (senden/empfangen) ca. 1,6ms, also müsste optimaler weise
in 16ms alles abgeschlossen sein. Flaschenhals ist die do-loop-Schleife.
Würde ich sofort mit Input lesen, ist nicht sicher, dass ich meine drei
Datenbytes lese.
Geht das nicht schneller? Kann mir jemand sagen, warum ich so lange
brauche, bis die Daten als empfangen gemeldet werden?
=> Zusammenfassend: 0.5ms Senden, 1ms empfangen, 14.5ms ??? (Win-intern
verarbeiten ??)
Gruß
Timo