RS232 empfangen...



  • Hallo alle zusammen.

    Ich hab ein kleines Problem beim Emfpangen von Daten via RS232 - oder vielleicht auch einen Denkfehler...

    Folgendes will ich machen:
    Ich habe einen Mikrochip (AVR) der Sendet via RS232 ständig Zeichen und danach 0x0A für NL und 0x0D für CR.

    Wenn ich in Linux ein Terminal aufmache erhalte ich auch die Zahlen und Zeichen. Es sind eig. immer nur 2 Zeichen. Also z.b. 01 oder 05 oder 00

    Ich habe mir folgendes aus dem Netz "geklaut" um Zeichen zu emfpangen, aber es funktioniert nicht richtig:
    (MODEMDEVICE ist der String für den COM Port.

    int fd;
    
    fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); 
             if (fd <0) {perror(MODEMDEVICE); exit(-1); }
    
    // Wurde alles definiert...
    newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
    
    // Ich glaube das sagt, dass er Zeile für Zeile liest...
    newtio.c_lflag = ICANON;
    
    // Keine Ahnung was das hier tut... kann mir das jemand erklären?
             tcflush(fd, TCIFLUSH);
             tcsetattr(fd,TCSANOW,&newtio);
    
    // Jetzt sollte irgendwas mit read kommen. Aber da bleibt er bei mir immer stehen... weiß also nicht weiter.
    

    Kann mir jemand weiter helfen?

    Das Gesendete sind nur Zahlen - von 0-20 allerdings in Textform. Ich brauch nichts weiter als eine Funktion die mir 1x die gerade anliegende Zahl von der RS232 Schnittstelle liest und zurückgibt. Irgendwie krieg ichs nicht hin.

    Kann mir jemand helfen?

    Gruß
    Stomper


Anmelden zum Antworten