Hallo, ich übertrage von einem PC Programm aus Daten zu einem Controller. Diese Datenübertragung besteht aus einem langen Telegramm, mit über 10000 Bytes. Am Ende wird quittiert. Dies ist auch über die normalen COM Schnittstellen kein Problem. Auch mit dem ersten USB zu Seriell Konverter den ich probiert habe, gab es keine Probleme (Firma secomp : ROLINE Konverter-Kabel USB - seriell). Dann gings los, 2 andere USB - seriell Konverter (einer von der Firma vivanco) nehmen die Daten so schnell entgegen, das der Konverter seinen Puffer wohl selbst überschreibt, weil die Daten über RS232 nicht so schnell ausgegeben werden können (19200 Baud). Ist das normal das bei manchen Konvertern die Daten im Puffer überschrieben werden? Habt ihr ähnliche Probleme auch schon mal gehabt? Schöne Grüße Dietmar
>Dann gings los, 2 andere USB - seriell Konverter (einer von der Firma >vivanco) nehmen die Daten so schnell entgegen, das der Konverter seinen >Puffer wohl selbst überschreibt, weil die Daten über RS232 nicht so >schnell ausgegeben werden können (19200 Baud). Ist das eine Vermutung deinerseits? Auf welcher Grundlage stellst du die auf? 19200 Baud sollte jeder Adapter schaffen. mit 19200 ist die Bitgeschwindigkeit innerhalb eines Zeichens definiert, nicht wie lange die Übertragung zwischen den Zeichen pausiert. Ein Mikrocontroller könnte z.B. probleme bekommen wenn die Zeichen mit nur ein oder 2 Stopbits zwischen ihnen hereinkommen und er probiert gleich die Daten auszuwerten bei Zugriff mit Polling auf die uart. Deswegen gibt es Interrupts. (Dein angebliches überschreiben des Puffers im USB Controller klingt sehr danach, du bist wohl eher zulangsam beim Abholen der Zeichen) Kann sein das dein PC Programm die Zeichen mit pausen zwischen den Zeichen sendet. Ein USB-seriell Wandler fasst aber ein paar Zeichen zu einem Paket zusammen und sendet dann dieses Paket mit nur einem oder 2 Stopbits zwischen den Zeichen. Durch die Paketierung verschiebt sich aber auch das Timing. bsp ftdi ft232 sendet erst nach 16ms oder 62 Byte ein Paket ab, solange sich die anderen Leitungen nicht ändern. Bei niedrigen Timeoutzeiten kann es da zu Problemen kommen. Auch unterschiedliches Handshakingprotokoll auf PC und Controllerseite können die Ursache sein. Lies dir am besten mal auf der Ftdi Seite die applikation Note zu Durchsatz und Latenz durch. Im allgemeinen deckt der Einsatz eines USB-Seriell Wandlers nur Probleme auf, die auch schon vorher vorhanden waren, bloss nicht aufgefallen sind.
Ich würde auch sagen, daß da entweder der USB-RS232 Dongle selber oder der USB-Treiber schlampig programmiert sind. Ein 10kB Puffer wird wohl nicht im Dongle sein, d.h. es muß ein Handshake zwischen Dongle und Treiber geben, um den PC warten zu lassen, bis der Puffer im Dongle wieder leer ist. Ich habe sicherheitshalber meine Daten in Häppchen von max 512 Byte portioniert und da laufen meine beiden Dongle noch. Peter
Das aufteilen in Häppchen ist natürlich eine Lösung. Wie gesagt, bei einem funktioniert es ja. Das der Puffer überschrieben wird ist natürlich nur eine Vermutung, wenn man auf der Mikrocontrollerseite die Daten mißt, kann man schon sehen wie lange die Daten kommen (müssen). Bei dem Einsatz besagter USB Konverter mißt man allerdings nur sehr kurz die Daten. Das läßt zumindest auf das Überschreiben des Puffers schließen. Am PC Programm kann man den Übertragungsfortschritt mittels Anzeige verfolgen, die eben bei 19200 Baud etwas dauert. Mit diesem USB Konverter ist die Fortschrittsanzeige quasi in 1 Sekunde fertig. Die sicherste Lösung wird wohl sein, die Daten aufzuteilen. Danke für die Antworten. Dietmar
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.