Hallo, ich habe wieder ein Verständnisproblem in C. Ich habe ein Array der Länge X. Der Inhalt wird per write() an den UART ausgegeben. Das letzte Zeichen dieses Arrays ist ein "\n", was laut http://de.wikipedia.org/wiki/Zeilenumbruch unter Linux einem 0x0A entsprechen sollte. Allerdings statt der X Zeichen X+1 gesendet, welches zuerst ein 0x0D und dann ein 0x0A enthält. Woher kommt das 0x0D? In den manpages finde ich nichts, und eine Ersetzung sollte unter Linux ja auch nicht stattfinden? Wer kann erklären, warum anscheinend doch eine Ersetzung stattfindet? Wo finde ich etwas handfestes?
> In den manpages finde ich nichts, und eine Ersetzung sollte unter > Linux ja auch nicht stattfinden? Potentiell doch, siehe termios (C) bzw. stty (Shell). Versuch mal stty -F /dev/ttyS0 -onlcr
Gibts Ne schrieb: > und eine Ersetzung sollte unter Linux ja auch nicht stattfinden? Da das System davon ausgehen muss, dass ein angeschlossenes Terminal bei LF kein CR-LF ausführt, sondern wirklich nur LF, wird normalerweise eine Ersetzung stattfinden.
Georg A. schrieb: > Potentiell doch, siehe termios (C) bzw. stty (Shell). Versuch mal stty > -F /dev/ttyS0 -onlcr Er sollte das besser in seinem C Programm als Initialisierung machen statt in der Shell. Hier könnte man sich einfach die Funktion ttyraw() klauen, um sämtliche Unix-typische Zeichenverabeitung auf einem TTY abzuschalten: http://www.cs.uleth.ca/~holzmann/C/system/ttyraw.c Wie Du schon sagtest: Das Manual zu termios(3) hilft, um ttyraw() zu verstehen.
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.