Hallo, ich versuche unter Linux mithilfe des angefügten Programms Daten von einem Micro zu empfangen. Der Micro uebertraegt zunaechst die Laenge (### llll\n) und danach binaer die llll Bytes. Leider emfange ich stets zuwenig Daten. Was auffaellt ist, dass in den uebertragenen Daten alle Bytes 0x0d,0x11 und 0x13 fehlen. Mit jedem Terminalprogramm (seyon, oder Win-Hyperterminal) klappt die Uebertragung problemlos. Daher denke ich, dass ich bein den Einstellungen der Schnittstelle einen Feher mach, kann jemand bitte einmal einen Blick darauf werfen ? Gruss horst.
0x0d ist Carriage return, 0x11 ist XON und 0x13 ist XOFF. Bei letzteren beiden muss man das Software-Handshaking abschalten, damit sie mit übertragen werden. Generell ist es aber besser, die Übertragung per X-Modem etc. zu realisieren oder die Daten in Hex-Chars zu konvertieren und dann zu übertragen. Ich bevorzuge letztere Methode, da so die Daten zwecks Fehlersuche noch einigermassen lesbar sind. Gruß Jörg
Hallo Jörg, da ich im raw-Modus empfange, ging ich davon aus, das cr,lf ?? >options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);< uebertragen wird. Welche option schaltet das xon/xoff ab ? Gruss horst.
Probier mal folgendes nach tcgetattr: options.c_iflag = 0; options.c_oflag = 0; options.c_lflag = 0; Ich hoffe das hilft Dir weiter. Ansonsten mal auf die man-pages schauen...
Hallo Bobby, dein Vorschlag hat's gebracht - dank fuer eure Hilfe. Gruss horst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.