Wie sollte sich eine serielle Schnittstelle beim Wechsel der Baudrate verhalten? Unter Linux tritt bei einem Baudratenwechsel via termios eines usbserial Adapters immer ein unerwünschter Wechsel des DTR-Signals auf. Ich benutze einen PL2303, das Problem tritt nach Hörensagen aber auch bei anderen Adapter auf. Evtl. ist es ein Problem mit USB? http://www.mjmwired.net/kernel/Documentation/usb/usb-serial.txt Und im Treiber: http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.31.y.git;a=blob;f=drivers/usb/serial/pl2303.c;h=600097de714fb08f65447ed3e0b1182160e4b69c;hb=HEAD#l619 Leider ist das eine Nummer zu groß für mich. Wo ist B0 definiert?
Die manpage sagt: The zero baud rate, B0, is used to terminate the connection. If B0 is specified, the modem control lines shall no longer be asserted. Normally, this will disconnect the line.
Hallo, leider kann ich das nicht genau beantworten. Mir hat jedenfalls folgender Link geholfen: http://www.easysw.com/~mike/serial/serial.html Gruß Olaf
Der "Fehler" liegt im Treiber und zwar hier pl2303.c: 622 if ((cflag & CBAUD) == B0) 623 priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS); 624 else 625 priv->line_control |= (CONTROL_DTR | CONTROL_RTS); 626 if (control != priv->line_control) { 627 control = priv->line_control; 628 spin_unlock_irqrestore(&priv->lock, flags); 629 set_control_lines(serial->dev, control); 630 } else { 631 spin_unlock_irqrestore(&priv->lock, flags); 632 } Beim wechsel der Baudrate ungleich "B0" wird DTR und RTS immer auf HIGH gesetzt, egal, ob vorher nicht gesetzt oder gesetzt. Du müsstest dir den Treiber ohne diese Zeilen übersetzen, dann sollte es funktionieren. (hab gerade dasselbe Problem)
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.