ESP32 stdio \n -> \r\n translation

Gast #6006402
Lesenswert?

Ahoi,

beim ESP32 wird bei stdio Ausgaben (printf, putchar) "\n" nach "\r\n" 
übersetzt. Ich bin mir recht sicher, dass es da einen Switch gibt um das 
abzuschalten. Einige Sucherei in der stdio-lib war leider erfolglos.

https://github.com/espressif/newlib-esp32/tree/master/newlib/libc/stdio

Hat jemand eine Idee?

Danke,
 C.B.
Moderator Persönliche Seite #6007082
Lesenswert?

Ich bin etwas neugierig geworden: Warum möchtest Du das \r unterdrücken?

Normalerweise ist es sinnvoll, dass bei einer Bildschirmausgabe 
(Unix/Linux: "tty") aus \n ein \r\n gemacht wird, damit der Cursor im 
Terminal tatsächlich durch das \r (Carriage Return) zunächst an den 
Anfang der Zeile geht und dann mit dem \n (Newline) eine Zeile tiefer 
rutscht. Ohne dieses Mapping fängt nämlich jede neue Zeile eingerückt an 
und der Output wandert immer weiter nach rechts.

Unter Unix kann man dieses Mapping durch diverse ioctls bzw. 
termio-Calls manipulieren, um volle Kontrolle über die Bildschirmausgabe 
zu bekommen und solche Mappings zu unterdrücken. Macht man aber 
eigentlich nur, wenn man eine Full-Screen-Anwendung baut wie einen 
Editor oder ein Menüsystem. In diesem Fall kann man dann auf curses 
(Unix) bzw. ncurses (Linux) bzw. mcurses (µCs) zurückgreifen, die so 
etwas verwalten.

Also: Was stört Dich an \r\n?
Gast #6007199
Lesenswert?

Ursache ist der Wunsch nach Kompatibiltät zu einem bestehenden System.

Der ESP32 ist nur ein Nebenschauplatz in dem Projekt und soll ebenfalls 
ein seit 20 Jahren etabliertes, proprietäres Telegrammformat nutzen. 
Sowas wie "MU FO 0\n". Mangels Pins hängen ein paar Teilnehmer per 
wired-AND am Konsolen-UART.

Die Frage habe ich geschrieben, weil z.B. ein freopen zur Folge hatte, 
dass gar nichts mehr gesandt wurde.

Tatsächlicher Chip ist der ESP32-WROVER. Die entsprechende Baugruppe ist 
fertig zugelassen und im Markt, wir schrauben im Moment ein paar neue 
Features an die Firmware.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren