Forum: Mikrocontroller und Digitale Elektronik STM32 - UART - Problem beim Senden von \n\r


von M. G. (ixil96)


Lesenswert?

Hallo,

ich möchte den String "mac get appeui\r\n" per UART an ein Funkmodul 
senden.
1
char *user_data = "mac get appeui\r\n";
2
3
uint16_t len_of_data = strlen(user_data);
4
HAL_UART_Transmit(&huart2, (uint8_t*)user_data, len_of_data, HAL_MAX_DELAY);

Mit dem Oszi an Tx gemessen wird folgendes versendet:

6d 61 63 20 67 65 74 20 61 70 70 65 75 69 0d 0a

mac_get_appeui ??

\r\n sollte aber eigentlich 5c 72 5c 6e sein und nicht 0d 0a!

Wo mache ich hier einen Fehler?

Beitrag #5943447 wurde von einem Moderator gelöscht.
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Guck dir mal ne ASCII Tabelle an ;)

von test (Gast)


Lesenswert?

M. G. schrieb:
> ich möchte den String "mac get appeui\r\n" per UART an ein Funkmodul
> senden.

Sicher das du das möchtest? Oder möchtest du doch "mac get appeui" an 
das Modul senden und die Zeile per Wagenrücklauf gefolgt von 
Zeilenvorschub abschließen?

von M. G. (ixil96)


Lesenswert?

test schrieb:
> M. G. schrieb:
>> ich möchte den String "mac get appeui\r\n" per UART an ein Funkmodul
>> senden.
>
> Sicher das du das möchtest? Oder möchtest du doch "mac get appeui" an
> das Modul senden und die Zeile per Wagenrücklauf gefolgt von
> Zeilenvorschub abschließen?

Ja, genau!

von Christian K. (the_kirsch)


Lesenswert?

M. G. schrieb:
> \r\n sollte aber eigentlich 5c 72 5c 6e sein und nicht 0d 0a!

Wenn du das wirklich willst musst du \\r\\n schreiben.

In C und anderen Sprachen wird der Backslash als Escape-Zeichen 
verwendet, damit das Zeichen danach eine andere Bedeutung hat. Will man 
ein Backslash ausgeben, muss man ihn zweimal schreiben.

https://de.wikipedia.org/wiki/Maskierungszeichen

von Carl D. (jcw2)


Lesenswert?

M. G. schrieb:
> test schrieb:
>> M. G. schrieb:
>>> ich möchte den String "mac get appeui\r\n" per UART an ein Funkmodul
>>> senden.
>>
>> Sicher das du das möchtest? Oder möchtest du doch "mac get appeui" an
>> das Modul senden und die Zeile per Wagenrücklauf gefolgt von
>> Zeilenvorschub abschließen?
>
> Ja, genau!

Dann ist doch alles richtig.

von STK500-Besitzer (Gast)


Lesenswert?

Mw E. schrieb:
> Guck dir mal ne ASCII Tabelle an ;)

oder die "\" zu "\\" doppeln.

von test (Gast)


Lesenswert?

M. G. schrieb:
> test schrieb:
> M. G. schrieb:
> ich möchte den String "mac get appeui\r\n" per UART an ein Funkmodul
> senden.
>
> Sicher das du das möchtest? Oder möchtest du doch "mac get appeui" an
> das Modul senden und die Zeile per Wagenrücklauf gefolgt von
> Zeilenvorschub abschließen?
>
> Ja, genau!

Du hast auf eine entweder/oder Frage mit "Ja" geantwortet. Das ist 
irgendwie verwirrend ;-)

von M. G. (ixil96)


Lesenswert?

Christian K. schrieb:
> M. G. schrieb:
>> \r\n sollte aber eigentlich 5c 72 5c 6e sein und nicht 0d 0a!
>
> Wenn du das wirklich willst musst du \\r\\n schreiben.
>
> In C und anderen Sprachen wird der Backslash als Escape-Zeichen
> verwendet, damit das Zeichen danach eine andere Bedeutung hat. Will man
> ein Backslash ausgeben, muss man ihn zweimal schreiben.
>
> https://de.wikipedia.org/wiki/Maskierungszeichen

Danke für die Info!

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
Noch kein Account? Hier anmelden.