Forum: Mikrocontroller und Digitale Elektronik Backslash '\' über RS232 schreiben?


von Wolfgang Supper (Gast)


Lesenswert?

Hallo freunde!

Bin grad am programmieren von meinem kleinen übungsboard und will nun 
über die RS232 schnittstelle von meinem µC aus den String

> char string[]="abc\0\r";

schicken. aber aus mir unerfindlichen gründen ist der Backslash am 
anderen Ende der übertragung nicht mehr der backslash der er einmal war!

muss ich an dieser stelle nun mit dem ASCII code arbeiten, oder gibts da 
noch eine andere möglichkeit?

danke & mfg, wolfi

von Haubndaucher (Gast)


Lesenswert?

> schicken. aber aus mir unerfindlichen gründen ist der Backslash am
> anderen Ende der übertragung nicht mehr der backslash der er einmal war!

> muss ich an dieser stelle nun mit dem ASCII code arbeiten, oder gibts da
> noch eine andere möglichkeit?

Bist du noch C-Anfänger?

probiers doch mal mit

> char string[]="abc\\0\\r";

von Karl H. (kbuchegg)


Lesenswert?

so wie \n  die Escape Sequenz für CR (oder war das LF) ist,
so wie \t  die Escape Sequenz für Tabulator ist

so ist \\ die Escape Sequenz für Backslash

von Wolfgang Supper (Gast)


Lesenswert?

Richtig, bin anfänger (-> übungsboard ;-) )!

Das '\r' quasi der "Enter"-button auf der tastatur ist, hab ich 
verstanden nur beim backslash war ich mir nicht sicher!

Heißt das jetzt das ich jedes sonderzeichen darstellen kann, wenn ich 
einfach nur ein '\'-Zeichen davor mache?

Wie funktioniert das dann wenn ich '"' (Hochkomma) über rs232 schreiben 
will? da regt sich ja leider der compiler auf...!

von Karl H. (kbuchegg)


Lesenswert?

\"

von Karl H. (kbuchegg)


Lesenswert?

und ansonsten schaust du zb mal hier

http://de.wikipedia.org/wiki/Escape-Sequenz

von Wolfgang Supper (Gast)


Lesenswert?

danke für die info!

jetzt hätt ich im anschluss gleich noch eine frage:

wie funktioniert das dann bei tastenkombinationen wie zB:

> Strg+Z

? Ist da die einzige chance diese tastenkombi zu erreichen, wenn ich mit 
ascii  code arbeite?

Strg+Z wäre dann ja "0x1A", oder?

von Karl H. (kbuchegg)


Lesenswert?

ja

Strg+Z (da Z der 16. Buchstabe im Alphab. ist, ist das
wie du richtig sagst 0x1A

Das kannst du in einem String schreiben als

"\x1A"

von Wolfgang Supper (Gast)


Lesenswert?

danke vielmals für die geduld auch mit anfänger wie mir ;-)!

werds gleich ausprobieren!

von Karl H. (kbuchegg)


Lesenswert?

Wolfgang Supper wrote:
> danke vielmals für die geduld auch mit anfänger wie mir ;-)!
>
> werds gleich ausprobieren!

mal sehen.
Normalerweise müsste jetzt noch eine Frage kommen :-)
Kann aber auch sein, dass du erst in den nächsten Tagen
drauf stösst. Das Problem ist so nicht ganz offensichtlich.


von Wolfgang Supper (Gast)


Lesenswert?

kbuchegg wrote:
> Das Problem ist so nicht ganz offensichtlich.

ok, auch auf die gefahr hin, dass ich jetzt keine antwort darauf 
erhalten werde, aber mit welchen problemen könnte/müsste ich rechnen 
bzw. von welchen problemen im weiteren verlauf wird ausgegangen?

von Karl H. (kbuchegg)


Lesenswert?

Die Frage muesste lauten:

Whoer weiss eigentlich \x wo die Hex Zahl aufhört
und wo es mit dem normalen Text wieder weitergeht?

Wenn ich einen Hex-Zahl 0x1A in den Text
"iiiAABjjjj" einbetten möchte und zwar genau zwischen
das letzte A und das erste B

  "iiiAA\x1ABjjjj"

dann interpretiert er anscheinend das B mit zur Hex Zahl dazu.

Die Lösung

  "iiiAA" "\x1A" "Bjjjj"

Der Compiler ist verpflichtet mehrere Strings die aufeinander-
folgen zu einem einzigen zusammen zu fassen. Zu diesem
Zeitpunkt (der Zusammenfassung) ist das \x1A aber bereits
bearbeitet worden und es kommt das gewünschte Ergebnis
zustande.

von Wolfgang Supper (Gast)


Lesenswert?

ok... erscheint mir logisch!

hätte es aber dennoch mit zufall richtig gehabt, weil ich zuerst

> sendstr(stringBeliebig);

und dann erst:

> sendstr("\x1A");

über die rs232 schicke!

aber danke trotzdem für die auflösung, jetzt weiß ich fürs nächste mal 
bescheid!

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.