Zum Inhalt springen

serielle schnittstelle unter linux


Orbital

Empfohlene Beiträge

hallo

ich suche ein tutorial oder informationen über programmierung der seriellen schnittstelle unter linux...

also prinzipiell soll das program einfach nur die daten der schnittstelle einlesen und in der standartausgabe raushaun. nichts wirklch schweres, allerdings bin ich anfänger in c++ :o)

vielen dank schon mal im voraus

/Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

wenn es wirklich nur eine Standard-Text-IO ist:

Öffne /dev/ttySx (x=0,1) bzw. bei einigen Distris /dev/cuax (x=0,1) wie eine normale Datei....

Zur Einstellung der Parameter sollte setserial Dein Freund sein. Das ist allerdings ein externes Tool, was die Aufgabe sicher besser hinbekommt, als jedes selbstgeschriebene C-Programm... (Man denke an exotische Hardware, mit der Dein Programm umgehen kann, solange das Betriebssystem die devs zur Verfügung stellt)

Daniel

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Jahre später...

wenn dein device richtig konfiguriert ist, dann kannst du das decvice, z.b. "/dev/ttyS0" wie eine datei öffnen, z.b. mit fopen("/dev/ttyS0","r")

angenommen das device ist eine alte com-maus, dann kannst du einfach mit gpm dem maustreiber laden und das device ist richtig konfiguriert. so hab ich das bei meiner "maus-fernbedienung" gemacht. und wenn du dann von dem device liest, dann bekommst du jede menge chars ^_^

viel spaß damit =)

wenn du noch hilfst brauchst, dann kann ich dir auch mal ein stück code zuschicken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dieses kleine Programm gibt dir alles als char aus, was auf "/dev/ttyS0" rein kommt. so als kleines Beispiel ...

Und wenn das Device richtig konfiguriert ist, dann ergeben die werte sogar Sinn :D

kannst dir auch die Zeichen als als Zahl darstellen lassen,

ist vielleicht sinnvoller ...



#include <stdio.h>

#include <errno.h>


#define DEVICE "/dev/ttyS0"


int main(int argc, char *argv[])

{

    FILE *fp;

    char c;


    fp = fopen(TERM_DEVICE, "r");

    if(fp == NULL)

    {

        printf("Error: %s: %s\n", DEVICE, strerror(errno));

        return 1;

    }


    while(1)

    {

        c = fgetc(fp);


        printf("%c ", c);

    }


    fclose(fp);

    return 0;

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

okay danke so lese ich das also aus, aber wie schicke ich denn ein Signal an die Schnittstelle um zum Beispiel ein Relai anzusteuern um ein Gerät wie externe Festplatte ein und auszuschalten?

Nur Beispiel ein wenig muss ich ja auch selber machen, weißt du zufällig wie das mit den Portbelegungen ist

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...