read(2) unter Suse Linux verwandelt 13 (CR) zu 10 (LF)?!

Diskutiere read(2) unter Suse Linux verwandelt 13 (CR) zu 10 (LF)?! im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich spreche mit meinem Programm, das ich unter Suse Linux 9.2 schreibe und betreibe und mit gcc kompiliere, eine RS232 Schnittstelle an, an...

  1. #1 tillman, 19.04.2006
    Zuletzt bearbeitet: 22.04.2006
    tillman

    tillman Grünschnabel

    Dabei seit:
    19.04.2006
    Beiträge:
    1
    Zustimmungen:
    0
    Hallo,
    ich spreche mit meinem Programm, das ich unter Suse Linux 9.2 schreibe und betreibe und mit gcc kompiliere, eine RS232 Schnittstelle an, an der ein Tektronix Cable Tester mit SP232 Modul hängt. Es funktioniert alles wunderbar, sowohl Steuerung, als auch das Auslesen der gesammelten Daten. Da der Cable Tester mir pro Datenpunkt einen 13 Bit unsigned integer schickt, wird diese durch das RS232 Prokoll in eine 5 Bit und eine 8 Bit Sequenz zerlegt. Die beiden Zahlen werden von meinem Programm zu einer zusammengefügt. Das Ergebnis passt, bis auf dies:
    Wenn die 5 Bit Zahl = 13 sein soll, wird sie zu 10 verwandelt. (In der 8 Bit Zahl kommt ein so geringer Wert nicht zustande, so dass ich das Problem dort nicht beobachten kann.) Wahrscheinlich wandelt read(2) die Zahl 13 (CR) automatisch in das UNIX Zeilenwechselzeichen 10 (LF) um. Dies ist mein erstes "richtiges" C-Programm, ich bin deswegen etwas ratlos. Kann mir irgend jemand diese Vermutung bestätigen bzw. mir kurz aufzeigen, wie ich dieses Verhalten abstellen kann?
    Vielen Dank!

    #######
    Das Problem wurde gelöst, die Beobachtung war richtig, allerdings passiert der Tausch durch den seriellen Treiber. Lösung:
    mit tcgetattr bzw. tcsetattr das c_iflag ICRNL deaktivieren (siehe termios manpage). In den unten aufgelisteten Einstellungen für den Port habe ich die Änderung nun eingefügt:

    Die Einstellung für den Port:
    void set_port(){
    extern int fd;
    int i,s;
    struct termios options;
    tcgetattr(fd, &options);/*get current options*/
    cfsetispeed(&options,B9600);/*set baud rate for input*/
    cfsetospeed(&options,B9600);/*set baud rate for output*/
    options.c_cflag |= (CLOCAL |CREAD);/*enable receiver, set local mode*/
    options.c_cflag &= ~PARENB;/*no parity, 1 stop bit*/
    options.c_cflag &= ~CSTOPB;
    options.c_cflag &= ~CSIZE;/*mask the character size bits*/
    options.c_cflag |= CS8;/*select 8 data bits*/
    options.c_cflag |= CRTSCTS; /*enable hardware flow control*/
    options.c_lflag &= ~(ICANON | ECHO |ECHOE | ISIG);/*conigured for raw input*/
    options.c_iflag &= ~(IXON | IXOFF | IXANY);/*switch off software flow control (XON is not supported by SP232)*/
    options.c_iflag &= ~ICRNL; /*switch off CR is changed to NL (LF on UNIX)*/
    options.c_oflag &= ~OPOST;/*raw output*/
    tcsetattr(fd, TCSANOW, &options);/*set new options for the port*/
    puts("Port setted up! Opened at 9600Baud!\n");
    //printf("File descriptor: %i\n",fd);
    }
     
Thema:

read(2) unter Suse Linux verwandelt 13 (CR) zu 10 (LF)?!

Die Seite wird geladen...

read(2) unter Suse Linux verwandelt 13 (CR) zu 10 (LF)?! - Ähnliche Themen

  1. Anlage einer SWAP-Datei unter CentOS 7 funktioniert nicht

    Anlage einer SWAP-Datei unter CentOS 7 funktioniert nicht: Hallo zusammen, ich verwende einen vServer von Strato (Linux V30) mit CentOS 7 64bit. Hier wollte ich nun einen SWAP-Speicher mit 8GB anlegen -...
  2. Robots aussperren, Websitescan unterbinden, PHP Checkbox-Captcha?

    Robots aussperren, Websitescan unterbinden, PHP Checkbox-Captcha?: Hallo zusammen, ich hätte gerne einen bestimmten Bereich der Webseite, den Robots oder scriptbasierte Scans von irgendwelchen Suchmaschinen oder...
  3. [gelöst] 2.HDD unter Freebsd partitionieren

    [gelöst] 2.HDD unter Freebsd partitionieren: Hallo Habe eine Testserver mit freeBSD 11.0 auf einer IDE-HDD (ada0) mit ZFS-root hab jetzt eine 2. HDd (SATA) angeschlossen und wollte die...
  4. Installation von COM Ports unter Unix

    Installation von COM Ports unter Unix: Hallo, vorne weg, ich habe von Linux nur Grundkenntnisse und bitte daher etwas um Rücksicht, wenn ich doofe fragen stelle;). Zum Problem: Es gibt...
  5. Samba 4 trennt sich beim Übertragen unter Windows7/10

    Samba 4 trennt sich beim Übertragen unter Windows7/10: Hallo zusammen Mir ist nun schon ein paar Mal aufgefallen dass sich mein Samba-Server (Debian 8.7.1 + backports-Kernel v4.9.x) "einfach so", ohne...