Datum: 20.02.2008 21:05
Hallo, Ich habe einen FTDI USB-> Seriell Adapter an einer Fritzbox 7170 haengen. Der Treiber dafuer ist eingebunden und das Geraet unter /dev/ttyUSB0 ansprechbar. Nur - wie kann ich die Baudrate fuer diese virtuelle Schnittstelle einstellen? setserial geht schonmal nicht :-( Freue mich über jeden Tip!! Mode
Datum: 21.02.2008 19:38
hallo ich weiß nicht wie das unter linux geht!
kann mir aber vorstellen, dass der virtuell com-port treiber für windows
ähnlich ist.
windows : systemsteuerung -> gerätemanager (com-port wählen) ->
eigenschaften
->baudrate (einstellen)
ACHTUNG : jedes prog stellt die baudrate des adapters auf seine eigene
geschwindigkeit ein (auch anzahl stop-bit, parität...)
viel wichtiger ist die einstellung von -usb transferbuffer size
und -latency time
beide parameter lassen sich unter windows -> gerätemanager einstellen
kleiner exkurs
rs232 - überträgt daten BYTE weise (nicht meckern -> veranschaulichung)
usb - überträgt daten BLOCK weise
wenn ein prog ein byte versendet und dann zeit x auf antwort wartet
(usb transferbuffer size = 4048)
wartet der usb treiber (latency time) lang
bis er dieses eine Byte versendet, da der puffer (transferbuffer size)
nicht voll ist!!!!!!
hat das länger als zeit x gedauert erkennt das host-programm ein
timeout!!
[usb sendet die daten nur sofot ab, wenn die puffer voll sind (RX,TX)]
und jetzt das schlimme : ich kenne (fast) kein kommerzielles prog,
das timeouts dem user meldet!!, oder nur durch
-das geht nicht
-bluescreen (eher ausnahme)
(ist auch kein wunder, da die app's ihre kindheit und puppertät in einer
zeit hatten, als es noch kein usb gab)
wenn ihr mich jetzt verstanden habt, gilt :
- kleine datenmengen : transferbuffer size -> klein, latency time ->
klein
- große datenmengen : umgekehrt
bei kleiner latency time und transferbuffer size steigt der
verwaltungsaufwand des host-rechners beide, in der summe sollte es also
nicht bis gegen null gehen!
evtl hat's geholfen
ede
Datum: 21.02.2008 19:57
oder der controller erkennt ein timeout
Datum: 22.02.2008 08:08
Hi, ich benutze ein USB-RS232 Konverter für die Kommunikation mit eine 8051. Allerdings mache ich die mit einem eigenen Programm, das die serielle Schnittstell einstellt (das Programm macht / kennt keinen Unterschied zwischen einer echte RS232 und einem USB Konverter). Das funktioniert astrein, es gibt auch keine Timeout-Probleme bzw. Verzögerungen von wegen einzelner Zeichen die gesendet / empfangen werden. Was für ein Konverte in dem Adapter ist, weiß ich nicht... Allerdings geht auch da setserial nicht! Aber stty geht, z.B. stty -F /dev/ttyUSB0 9600 Gruß, Bernhard
Datum: 22.02.2008 08:43
Hinweis (edit geht nicht??): Die Latenz bei einzelnen Zeichen spielt bei meiner Anwendung keine Rolle, da ich meist größere Pakete übertrage...
Datum: 22.02.2008 21:15
Warum geht setserial nicht?
Datum: 23.02.2008 14:36
Hi, folgendes passiert:
bernhard@cork:/local/Video$ setserial -g /dev/ttyUSB0 Cannot get serial info: Invalid argument |
mach ich einen strace sehe ich:
open("/dev/ttyUSB0", O_RDWR|O_NONBLOCK) = 5
ioctl(5, TIOCGSERIAL, 0xbfcc2618) = -1 EINVAL (Invalid argument)
|
Es geht also ein ioctl nicht, ist wohl im USB Treiber nicht implementiert... Wenn man allerdings ein bischen googelt wird von setserial ja eigentlich auch abgeraten, da es sehr hardwarenah arbeitet (bzw. arbeiten will). Das ist dann wohl auch das Problem, der USB Konverter ist halt doch ein bischen anders anzusprechen als der 16550A direkt... Gruß, Bernhard
Datum: 23.02.2008 16:22
Mit welchem Programm möchtest du jetzt eigentlich konkret mit der seriellen Schnittstelle kommunizieren? Normalerweise macht man die Einstellung der Baudrate über das Programm, also z.B. minicom oder screen.
Datum: 24.02.2008 19:19
Ich moechte ein echo "Blabla" > /dev/ttyUSB0 machen....
Datum: 24.02.2008 21:12
Ich wuerde dir stattdessen die Verwendung des Programms "socat"
empfehlen:
echo df | socat - /dev/ttyS0,raw,echo=0,crnl,b57600
Damit kannst du naemlich wie in dem Beispiel gezeigt die Parameter fuer
die serielle Schnittstelle direkt angeben.
Datum: 25.02.2008 13:21
Habe mir socat aus Neugier heruntergeladen und bin begeistert: Das kann ja nicht nur seriell, sondern scheint auch ein vollwertiger Ersatz für netcat zu sein. Das bleibt auf jeden Fall auf der Platte. Dank an Bernhard Walle für den Tip :)
Datum: 25.02.2008 15:50
Und ich danke ebenfalls dem Bernhard für den Tipp.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel