Problemm mit read(...)



  • Hallo!

    Ich habe ein problem mit Ansteurung der seriellen Schnittstelle.
    Also, als Beispiel nehme ich dieses Program aus der FAQ:http://www.c-plusplus.net/forum/viewtopic.php?t=39504
    Laut der Beschreibung in dem Buch aus dem das Programm stammt, sollte es die Zeichen von der Tastatur an die serielle Schnittstelle senden von dort sie wieder auslesen und auf der konsole ausgeben.
    Bei mir tut es aber nicht.
    Ich habe inzwischen herausgefunden das Problem mit der read(..) funktion zusammenhängt.Das Programm bleibt nämlich bei der funktion hängen.Die Funktion Read(..) soll angeblich auf eintreffene Daten warten, aber an der Schnittstelle ist ein Nullmodem angeschlossen und die Daten wurden schon gesendet.

    Das Nullmodem (hier schema)ist in ordnung, mit Berechtigung stimmt auch alles (root hat das gleiche problem) also warum funktioniert es nicht ?

    Kann mir jemand helfen ?



  • Es könnte daran liegen, dass die "Lesefunktion" der seriellen Schnittstelle deaktiviert ist. Das war mir leider erst nach dem Druck der 1. Auflage aufgefallen und ist in der 2. (und jetzt auch vorliegenden 3. Auflage) korrigiert.
    Ergänze bitte die Zeile

    term_attr.c_cflag = TERM_SPEED | CS8 | CRTSCTS | CLOCAL;
    

    um dad Flag CREAD:

    term_attr.c_cflag = TERM_SPEED | CS8 | CRTSCTS | CLOCAL | CREAD;
    

    Dann müsste es gehen.

    In dem Beispielprogramm ist außerdem Hardware-Handshake aktiviert (CRTSCTS), d.h. die RTS- und CTS-Leitung müssen korrekt angeschlossen sein. Ggf. kannst du ja mal dieses Flag rausnehmen.

    Martin

    PS.: In meinem Buch ist das natürlich alles etwas ausführlicher erklärt. 😉



  • Vielen Dank für die Antwort.

    Ich hätte nicht gedacht das es nur so eine kleinigkeit ist.
    Die beschreibung hier: termios.h File
    sagt eigentlich das gleiche aber ich es bis heute irgendwie nicht richtig verstanden.
    Das Programm funktoniert jetzt wie erwartet.

    PS: Ich habe das Buch "C und Linux" 2.Auflage , gefällt mir sehr gut, außer dass es besser wäre XView durch was aktuelleres zu ersetzen (gtk z.B).


Anmelden zum Antworten