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
spess53 schrieb: > Hi > > CR $0C > LF $0A > > MfG Spess Ich sage mal das ist falsch. Richtig wäre ..... CR = 0x0D LF = 0x0A gruß
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
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
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.
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;)
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.