mikrocontroller.net

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


Autor: Wolfgang Supper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Haubndaucher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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";

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfgang Supper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
\"

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und ansonsten schaust du zb mal hier

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

Autor: Wolfgang Supper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Wolfgang Supper (Gast)
Datum:

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

werds gleich ausprobieren!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Wolfgang Supper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfgang Supper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.