Daten aus der Serielleschnittstelle Lesen und ausgeben
-
Ich habe die Einstellung von
fcntl(fd, F_SETFL, FNDELAY);
auf
fcntl(fd, F_SETFL, 0);
gesetzt. jetzt bekomme ich
[b]fehler:: Success[/b]
was bedeutet das? heißt das, dass lesen erfolgreich war?
-
diese Funktionen sind doch kein ANSI-C oder? sieht mir eher nach UNIX aus.
Aber wenn das so ausgegeben wird, dann ist kein fehler passiert
-
fcntl(fd, F_SETFL, FNDELAY); ist C Funktion.
Aber wenn alles ok ist, warum springt zur Zeile 8. Es soll die ByteZahl ausgeben. oder?
-
wie öffnest du denn die Datei. Hier mal ein Ausschnitt aus einem Beispiel
wie bereits einmal in diesem Forum gepostet.# define TERM_DEVICE "/dev/ttyS0" int main() { if ((fd = open(TERM_DEVICE, O_RDWR)) == -1) { perror("terminal: Can't open device " TERM_DEVICE); return(1); } }
und dazu noch der komplette Link: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39504.html
Gruß Tom
-
Ja das ist schon auch C aber eben nicht teil der std. C-Library.
Da bin ich mir deshalb so sicher weil die Funktion in <unistd.h> deklariert ist.
-
Wenn du alles richtig gemacht hast, und trotzdem nichts gelesen wird, dann solltest du mal das Programm portmon herunterladen und schaun was auf dem port so abläuft.
-
Das ist ein Super Idee mit portmon.
man soll die fehlerQuelle erst untersuchen :).
gibt das Programm auch für Suse Linux? oder Ähnliches?
-
ich mache das Port so auf.
const char *port="/dev/ttyS0"; void PortVerbinden(){ struct termios options; fd = open(port, O_RDWR | O_NOCTTY | O_NDELAY); fcntl(fd, F_SETFL, 0); tcgetattr(fd, &options); options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; /* Select 8 data bits */ /*Set the baud rates to B9600...*/ cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); /*No Parity*/ options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; /* set the options */ tcsetattr(fd, TCSANOW, &options); }
-
puhh... Bin nicht wirklich der Held wenn es um linux geht. Aber probier doch mal folgenden Link: http://www.ilkertemir.com/source/unix/portmon/
Oder gib einfach mal unter google "portmon Unix" ein, denke wenn du das runterlädst wirste eh den quellcode haben. Dann kannste das ganze für deine Distribution kompilieren und fertig.
-
Übrigens siehst du dann auch wie du den port öffnest und wie du ihn einstellst. Ist auch ganz gut zum prüfen ob du alles richtig machst