Serieller Port mit C++ unter linux



  • Hallo

    wie kann ich unter Linux die Serielle Schnittstelle lesen/schreiben?
    Google hat mich eigendlich nur zu boost geführt, aber mit der dort vorgefndenen Dokumentation komme ich nicht weiter.

    Gibt es irgendwelche Dokumente oder Links wo das halbwegs einsteigerfreundlich mit Beispielcode beschrieben wird?

    Ich suche aber nur C++ Code und nicht C Code, den gibts reichlich.

    Notfalls würde mir auch ein Buchtitel wo der Zugriff auf den seriellen Port beschrieben wird helfen.

    Danke

    Christian


  • Administrator

    War es bei Linux/Unix nicht so, dass die Ports als Files vorliegen, unter /dev/ttyxxx.xxx oder sowas. Wobei die Xs durch irgendwelche Zahlen und Kürzel zu ersetzen sind. Anders gesagt kannst du einfach einen std::fstream nehmen und das enstprechende File öffnen und dann normal lesen und schreiben. Allerdings keine Garantie darauf, mein Wissen in dem Bereich ist etwas beschränkt.

    Um C-Code wirst du wohl kaum herum kommen. Dies geht schnell in die nähe von Treiberprogrammierung und dort wird hauptsächlich C eingesetzt. Daher werden wohl viele Beispiele, Tutorials und Bücher in C sein. Aber C ist ja nicht so komplex und man sollte es einfach in C++ übersetzen können.

    Aber ich denke sowieso, dass du hier ein wenig im falschen Forum bist. Wir haben extra eine Linux/Unix Abteilung:
    http://www.c-plusplus.net/forum/viewforum-var-f-is-5.html

    Der C++ Standard kennt schliesslich keine seriellen Schnittstellen.

    Übrigens wäre ein kurzer Blick in die Linux/Unix FAQ dieses Forums auch nicht schlecht gewesen. Dann hättest du nämlich zum Beispiel diesen Thread gefunden:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39504.html

    Grüssli



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    ich hab anderswo eine Lösung gefunden.

    http://libserial.sourceforge.net

    Für meine einfache Aufgabenstellung reich diese Lib aus.

    Christian



  • Ausgabe auf die serielle Schnittstelle:

    FILE *fp = fopen ("/dev/ttyS0", "ab");
        fputc (0x43, fp);
        fclose(fp);
    

    Auslesen der seriellen Schnittstelle:

    FILE *fp = fopen ("/dev/ttyS0", "rb");
        char data = (char)fgetc ( fp);
        fclose(fp);
    

Anmelden zum Antworten