Forum: Mikrocontroller und Digitale Elektronik Wert von CR/LF (Carriage Return & Line Feed)


von Kurt W. (bascomania)


Lesenswert?

Hi Leute.

Ich habe einen String der ich von der UART empfange, daraus möchte ich 
gerne ein Zeichen heruas "destillieren" (es steht immer am gleichen 
Ort.)

Der String sieht so aus:

CR LF A CR LF CR LF CR LF CR LF

Also schreibe ich in meinem Code:

I = Right(I , 9)
I = Left(I , 1)

Doch wieso bekomme ich mein Zeichen nicht? (Also das "A")

welchen Wert hat denn ein CR? Nicht =1?

Lg

von spess53 (Gast)


Lesenswert?

Hi

CR  $0C
LF  $0A

MfG Spess

von Jean P. (fubu1000)


Lesenswert?

spess53 schrieb:
> Hi
>
> CR  $0C
> LF  $0A
>
> MfG Spess

Ich sage mal das ist falsch. Richtig wäre .....

CR = 0x0D
LF = 0x0A

gruß

von Magnus Müller (Gast)


Lesenswert?

Stimmt. 0x0C ist NP (New Page).

von Kurt W. (bascomania)


Lesenswert?

Beantwortet ehrlich gesagt meine Frage nicht.

ich brauche übrigens die hex-werte, also 13 und 10

Aber wenn ich das als HEX sende (mit hterm), wie kriegt dann das der MC?

Als einziges Zeichen oder als 2?

Lg

von spess53 (Gast)


Lesenswert?

Hi

Tschuldigung. Natürlich $0D.

>ich brauche übrigens die hex-werte, also 13 und 10

Das ist dezimal.

>Aber wenn ich das als HEX sende (mit hterm), wie kriegt dann das der MC?
>Als einziges Zeichen oder als 2?

1 Zeichen. Wenn du es richtig machst.

MfG Spess

von Matthias L. (matze88)


Lesenswert?

Dir ist schon klar, was Zahlensysteme sind?

CR ist 13(10), D(16) bzw. 15(8). Alternativ auch einfach 1101(2).

ein LF(gleichbedeutend mit NL) ist 10(10), A(16) oder 12(8). Binär: 
1010(2).

Selbstverständlich kommen diese 2 Zeichen nicht als ein Zeichen an, 
warum sollten sie? Und vor allem WIE sollten sie?

Kleiner Edit:

Bitte schreib doch nächstes mal auch dazu, dass du in Bascom 
programmierst. tut zwar hier direkt nichts zur Sache, aber da du einen 
Codeschnipsel beifügst ist das ganz angemessen. Außerdem kann es auch 
mal Probleme geben, die vielleicht programmiersprachenabhängig anders am 
sinnvollsten gelöst werden.

von Kurt W. (bascomania)


Lesenswert?

Okay, vielen dank euch allen, doch bin doch noch nicht über die lösung 
gestolpert :$ ^^ ;)

Hier mal der String den ich empfange:

at+cmgr=1<\r><\r><\n>+CMGR: "REC 
READ","XXXXXXXXXX",,"09/08/08,18:09:13+08"<\r><\n>A<\r><\n><\r><\n>OK<\r 
><\n>

So, ich will jetzt hier das A heruashohlen (das Grossgeschriebene 
welches in leserichtung vor dem OK kommt)

Schubst mich bitte n'bisschen;)

von MaWin (Gast)


Lesenswert?

> Doch wieso bekomme ich mein Zeichen nicht?

Vielleicht komprimiert der Empfang ein CRLF zu einem \n.

Aber dein Problem ist ein anderes:

Du schreibst Scheiss-Code.
Nämlich Code der nur sonntags vormittags vielleicht funktioniert.
Weil du Voraussetzungen annimmst (der String ist garantiert SO!)
die nicht unbedingt stimmen müssen.

Richtig schreibt man Code, der den empfangenen String Zeichen für 
Zeichen analysiert, und sich Gedanken macht, was er tun soll, wenn etwas 
nicht so ist, wie es sein sollte.

Mir scheint, er sollte analysieren, ob das A am Zeilenanfang steht.
Und als Zeilenende darf er CR und LF annehmen, nicht unbedingt beide 
direkt hintereinander.


Desweiteren hätte BASCOM die MID Funktion um ein Zeichen aus dem String 
zu holen, oder man holt es als Byte

http://www.rn-wissen.de/index.php/Bascom_Strings_und_Bytes

von Kurt W. (bascomania)


Lesenswert?

Da sagt man doch danke;)=) (natürlich auch für die Kritik, is zwar nicht 
so schön zum höhren aber es bringt einen weiter;))

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.