Anzeige:
Ergebnis 1 bis 3 von 3

Thema: LINUX UART WRITE Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2002
    Ort
    Kaisheim
    Beiträge
    36

    LINUX UART WRITE Problem

    Hallo,

    ich versuche gerade einige Byte per UART zu verschicken, leider bisher ohne Erfolg. Als Example verwende ich das NON-CANONIAL Example von TLDP.
    Leider kann ich nichts senden(write), empfangen geht aber(read).

    Ich verwende 2PCs mit einem Nullmodemkabel. Ueber Minicom klappt alles perfekt.
    Code:
    #include <sys/types.h>
    
    #include <sys/stat.h>
    
    #include <fcntl.h>
    
    #include <termios.h>
    
    #include <stdio.h>
    
    #include <unistd.h>
    
    #include <string.h>
    
    
    
    #define BAUDRATE B115200
    
    #define MODEMDEVICE "/dev/ttyS0"
    
    #define _POSIX_SOURCE 1 /* POSIX compliant source */
    
    #define FALSE 0
    
    #define TRUE 1
    
    
    
    volatile int STOP=FALSE; 
    
    
    
    main()
    
    {
    
    int fd,c, res;
    
    struct termios oldtio,newtio;
    
    char buf[255];
    
    
    
    fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); 
    
    if (fd <0) {perror(MODEMDEVICE); return (-1); }
    
    
    
    tcgetattr(fd,&oldtio); /* save current port settings */
    
    
    
    bzero(&newtio, sizeof(newtio));
    
    newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
    
    newtio.c_iflag = IGNPAR;
    
    newtio.c_oflag = 0;
    
    
    
    /* set input mode (non-canonical, no echo,...) */
    
    newtio.c_lflag = 0;
    
     
    
    newtio.c_cc[VTIME]    = 0;   /* inter-character timer unused */
    
    newtio.c_cc[VMIN]     = 5;   /* blocking read until 5 chars received */
    
    
    
    tcflush(fd, TCIFLUSH);
    
    tcsetattr(fd,TCSANOW,&newtio);
    
    
    
    
    
    while (STOP==FALSE) {       /* loop for input */
    
      res = read(fd,buf,255);   /* returns after 5 chars have been input */
    
      buf[res]=0;               /* so we can printf... */
    
      printf(":%s:%d\n", buf, res);
    
      write(fd,buf,res);
    
      if (buf[0]=='z') STOP=TRUE;
    
    }
    
    tcsetattr(fd,TCSANOW,&oldtio);
    
    }

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jan 2005
    Ort
    Berlin
    Beiträge
    279
    ich habe mich vor 2 Jahren im 6.Semester auch einmal mit der Programmierung eines Kerneltreibers aka Linux Kernel Modul befasst.

    Ich biete dir hier meinen Code im Anhang mit an.
    Geändert von lkwg82 (04.05.09 um 10:25 Uhr)
    http://larsindo.wordpress.com/ ( Auch als Informatikstudent kann man ein Praxissemester im Ausland machen -> Indonesien. )

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jan 2005
    Ort
    Berlin
    Beiträge
    279
    So nun hier nochmal die Doku, ohne die ist vieles "doof" .

    http://www.lgohlke.de/hp5/hp/english...tation.pdf.jsp
    http://larsindo.wordpress.com/ ( Auch als Informatikstudent kann man ein Praxissemester im Ausland machen -> Indonesien. )

Ähnliche Themen

  1. Server aufsetzen
    Von Sumeragi im Forum System installieren und konfigurieren
    Antworten: 9
    Letzter Beitrag: 04.10.06, 15:14
  2. Firewall oder KInternet stürzt ab
    Von Suse10.0User im Forum Anbindung an die Aussenwelt
    Antworten: 9
    Letzter Beitrag: 15.08.06, 22:03
  3. EasyLite TV Tuner
    Von alex23 im Forum Fernsehen
    Antworten: 11
    Letzter Beitrag: 23.05.06, 22:03
  4. Probleme mit "Wine, Suse9.3, Ati 9700"
    Von celine im Forum Emulatoren für Spiele
    Antworten: 11
    Letzter Beitrag: 27.06.05, 11:16
  5. Einwahl ins WWW wird ohne Fehlermeldung abgebrochen
    Von MarcusLiebig im Forum System installieren und konfigurieren
    Antworten: 8
    Letzter Beitrag: 21.10.03, 20:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •