On Fri, 10 Aug 2007 23:32:26 +0200, you wrote:
.
>schlecht bis garnicht. Das WARUM will ich gerne klären...
>Ich muss, um die Maus ansprechen zu können
>stty speed 4800 > /dev/ttyUSB0
>ausführen, damit der RS232 Port auch auf 4800 8N1 läuft. Da ich schon
>den parameter "speed" nicht in den schwer aufzutreibenden manuals finden
>konnte, wollte ich gerne fragen, ob sich jemand damit etwas besser
>auskennt und mir unter umständen sagen kann, woher folgendes Phänomen
>kommen könnte:
>
>cat /dev/ttyUSB0 sollte ja die live-Ausgabe der Maus printen. Zu Beginn
>meiner Tests kamen auch Daten an. Allerdings erst nach einer sehr langen
>Wartezeit (>2Minuten). Die Daten kamen allerdings nicht Zeilenweise bzw.
>Zeichenweise, wie ich sie erwarten würde, sondern im Block von mehreren
>hundert Zeilen. Dann war wieder Stille.... eine lange Zeit später kommt
>wieder so ein dicker Block.
Tja, das ist der Unterschied zwischen byteweiser Übertragung bei einem
echten UART und blockweiser Übertragung bei USB. USB überträgt immer nur
blockweise, und das Device wartet wohl, bis wieder ein solcher Block voll
ist, um ihn dann abzuschicken. Dazu kommt noch, daß jedes Device vom Host
gepollt werden muß, d.h. Interrupts gibts nicht.
Das ist grundsätzlich bei jedem USB-Seriell Adapter so, und deswegen gehen
zeitkritische Dinge wie Programmiergeräte oder Ping-Pong-Protokolle nicht
oder nur sehr langsam, weil das Timing völlig im Eimer ist. Man kann das
zwar durch etwas Tuning hindrehen, aber echte UARTs wegzuoptimieren ist
eigentlich das dümmste, was ein System-Designer machen kann.
Und eine solche Optimierungsarbeit kommt jetzt auf Dich zu. Sieh irgendwie
zu, daß Du die Puffer und die Timeouts, ab wann ein Block unabhängig vom
Füllstand losgeschickt wird, kleiner machst.
Mit freundlichen Grüßen
Frank-Christian Krügel
Received on Sat Aug 11 2007 - 11:42:55 CEST
This archive was generated by hypermail 2.2.0 : Sat Aug 11 2007 - 11:43:00 CEST