Forum: PC Hard- und Software Datendurchsatz am virtuellen Com-Port bestimen ?


von Bastler (Gast)


Lesenswert?

Hallo, könnt Ihr mir eine Software, unter Windows, empfehlen, mit der 
ich den realen Datendurchsatz durch einen virtuellen Com-Port bestimmen 
kann? Eine freie Software wäre natürlich praktisch.

Ich habe hier eine Controller-Platine die per Uart und einen 
Uart-USB-Wandler (FT232) Status-Updates an ein PC-Programm ausgibt. Die 
Schnittstellengeschwindigkeit ist auf 57600Bd. festgelegt. Ab und zu 
sendet auch das PC-Programm eine kurze Anweisung an die Platine. Die 
Kommunikation nutzt aber die Bandbreite der möglichen 57600Bd. bei 
weitem nicht aus. Ich würde nun gern bestimmen welche reale Datenrate 
wirklich übertragen wird.

von Rainer V. (rudi994)


Lesenswert?

An Hard-/Software zum Thema weiß ich auf die Schnelle nur 
kostenpflichtige (teure) Angebote. Evtl. sind hier einige Infos :
Beitrag "ATmega 8515/USART empfängt nicht schneller als 9600 Baud"

von g457 (Gast)


Lesenswert?

> Ich würde nun gern bestimmen welche reale Datenrate wirklich übertragen
> wird.

Ossi dranhängen oder besser gleich einen Frequenzzähler.

von Peter II (Gast)


Lesenswert?

also 57600Bd kann man ohne Schwierigkeiten auf jeden PC erreichen. Wenn 
es bei dir viel langsamer ist, dann kann es nur an extrem schlechter 
Software oder an der Latenz liegen. Wenn man immer ein Byte sendet und 
dann auf eine Antwort wartet dann halbiert das schon mal die mögliche 
Bandbreite.

von Bastler (Gast)


Lesenswert?

Zunächst mal Danke für Eure Antworten. Ich denke, ich habe mich da etwas 
blöd ausgedrückt.

Die Kapazität der seriellen Leitung wird nicht ständig voll ausgenutzt. 
D.h. es wandern nur "ab und zu" mal ein paar Datenpakete hin und her. 
Das ist so auch in Ordnung.

Ich möchte nun bestimmen wie hoch die Menge der übertragenen Daten ist.
Ich bräuchte also z.B. ein Sniffer-Programm welches die Daten am 
virtuellen Com-Port mitschreibt. Bei einem festen Zeitraum könnte ich 
dann bestimmen welche Menge Daten, z.B. pro Sekunde, übertragen werden.

Hintergrund: Ich würde gern statt der seriellen Leitung eine Funkstrecke 
einsetzen. Diese hat jedoch einen geringeren effektiven Datendurchsatz 
als 57600 (over the air). Die Schnittstellengeschwindigkeit des 
Funkmoduls kann ich auf 57600 einstellen.
Wenn also die tatsächlich übertragene Datenmenge unterhalb der Datenrate 
der Funkstrecke bleibt muss ich nicht mit Datenverlusten rechnen, 
maximal mit verspäteten Daten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bastler schrieb:
> Ich bräuchte also z.B. ein Sniffer-Programm welches die Daten am
> virtuellen Com-Port mitschreibt.

http://www.heise.de/download/free-serial-port-monitor.html

Funktioniert mit allen seriellen Schnittstellen, ob "virtuell" (USB, 
Bluetooth, Ethernet-Deviceserver etc.) oder "real".

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

USB sendet pro Frame max. 8 Bytes und das alle 10ms. Machst du ne Pause 
in den Daten von mehr als 10ms bekommst du erst ins NÄCHSTE Frame wieder 
was rein. Ich glaub die Werte stimmen nicht ganz je nach USB-Variante. 
Aber Google einfach danach.
Im Extremfall ist USB also schnarchlangsam!

von Peter D. (peda)


Lesenswert?

Abdul K. schrieb:
> USB sendet pro Frame max. 8 Bytes und das alle 10ms.

Erzähl mal nochn Märchen.
Bei 115200Baud ist ein üblicher Prolific mindestens gleich schnell, wie 
ne echte UART.
Die Umsetzer haben deutlich größere Puffer, als die standard UART.
Der FTDI hat sogar 4kB.
Du mußt also nur in großen Blöcken senden, dann begrenzt allein die 
Baudrate den Durchsatz.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich schrieb nichts anderes. Genaue Werte sollten per Google ermittelt 
werden, habe die nicht im Kopf. USB1.5 USB2 verhalten sich auch 
unterschiedlich.

Der Haken bei USB ist eben Warten auf eine synchrone Rückmeldung: Dann 
flutschen die Bytes eben wie oben beschrieben schön einzeln in Frames 
und das dauert. Asynchrones Streaming dagegen schafft ca. 90% der 
Bandbreite.

von W.S. (Gast)


Lesenswert?

Bastler schrieb:
> Ich würde nun gern bestimmen welche reale Datenrate
> wirklich übertragen wird.

Das hängt in erster Linie von dir und deiner Anwendung ab. Im 
USB-Bereich wird grundsätzlich paketorientiert gearbeitet, häufig (aber 
nicht immer) ist die Paketgröße 64 Bytes. Wenn du also volle Kanne Daten 
sendest, so daß der Fifo im FTDI-Chip immer so einigermaßen gut gefüllt 
ist, dann erreichst du eben die Datenrate, die aus deiner Baudrate 
resultiert. Wenn du hingegen Lücken läßt und dabei der Fifo im FTDI-Chip 
leer läuft, dann gibt's Einbrüche in der realen Übertragung - aber das 
sollte dich eigentlich nicht scheren, denn das USB-interne Tempo ist 
allemal größer als die üblichen Baudraten.

Ärgerlicher wird es, wenn jemand sein System bidirektional mit Warten 
organisiert, also wenn dein uC erstmal ein Byte lesen will, dann ein 
Byte als Antwort sendet, daraufhin ein nächstes Byte lesen will und so 
weiter. Dann macht die USB-Verbindung weithin nix, bei nächster 
Gelegenheit (nach ner Millisekunde oder noch später) wird nur ein 
lumpiges Byte im (meist) 64 Byte großen Block übertragen und während 
dieser Zeit wartet sich das Programm im PC die Beine in den Bauch. Wenn 
es dann endlich die Antwort hat, sendet es wieder nur 1 Byte, wieder 
unausgenutzter Block, diesmal Warten auf Seite des uC ... usw.

Da macht es keinen Unterschied mehr, ob man seriell mit 4800 Baud 
verkehrt oder mit 56K Baud. Also: solch einen Warte-Hin-Warte-Her 
Betrieb vermeiden und Datenströme im uC puffern.

W.S.

von Bastler (Gast)


Lesenswert?

Danke an Alle!

Hat super geklappt mit dem Free-Serial-Port-Monitor.
Leider ist die Version mit ein paar Funktionseinschränkungen versehen. 
Ging aber trotzdem.

Ich habe einfach 100 sekunden lang den Datenstrom aufgezeichnet. Daraus 
ergibt sich, daß doch mehr Daten übertragen werden, als ich erhofft 
hatte. Etwa 40kB/s.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bastler schrieb:
> Etwa 40kB/s.

Bei 57600 Baud? Da stimmt was nicht, denn damit sind rein physikalisch 
nicht mehr als 5760 Bytes/sec übertragbar.

Oder meinst Du mit "kB" Kilobit?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.