Forum: Mikrocontroller und Digitale Elektronik Frage vom End Of String "\0"


von Ju (Gast)


Lesenswert?

Hallo,

mache ich gerade eine Parse mit ATmega128. Controller soll jetzt "End of 
String" richtig erkennen. (String ist von Computer)

Habe ich eine Empfehlung von Erfahrener, dass ich "\0" benutzen kann.

Ist die Sonderzeichen '\0' die Zusammensetzung von zwei 7-bit ASCII 
Zeichen (\ und 0)?
Wenn Ja, Dann kann ich "\0" per Tastatur von Computer eingebenorder?

Vielen Dank!!

von Εrnst B. (ernst)


Lesenswert?

Nein, das "\0" ist die C-Darstellung von Oktal 000, also das 
Ascii-Zeichen "NUL", mit dem Wert 0, bei dem alle Bits LOW (0) sind.

von Fred (Gast)


Lesenswert?

da es kein "lesbares" Zeichen in einem ASCII-String gibt
wird diere mit Null (chr$(0)) abgeschlossen um das
Ende zu signalisieren.

dh wenn du eine 0 (Null) emfängst ist der String alle.

Gruß Fred

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Ist das bei seriell (COM) auch so? Ich dachte immer da wird 0x0D0A 
gesendet (also Return und Newline, ganz früher auch Wagenrücklauf 
Zeilenschaltung WRZS genannt).

Sven

von Karl H. (kbuchegg)


Lesenswert?

Sven Stefan wrote:
> Ist das bei seriell (COM) auch so? Ich dachte immer da wird 0x0D0A
> gesendet (also Return und Newline, ganz früher auch Wagenrücklauf
> Zeilenschaltung WRZS genannt).

Das ist zuallererst eine reine Vereinbarungssache zwischen
Sender und Empfänger.

Wenn der Sender definiert, dass er als 'String Ende' Kennung
das Zeichen ';' schickt, dann ist für den Empfänger der String
zuende sobald er ein ';' empfängt.

Was du meinst ist die gebräuchliche Definition einer
Zeile: Eine Zeile sind umfasst alle Zeichen bis irgendwann
ein CR/LF oder LF oder CR empfangen wird.

Das kann bereits ein String sein, muss aber nicht.
Niemand sagt, dass in einem String nur eine 'Zeile'
enthalten sein darf.

von Ju (Gast)


Lesenswert?

Vielen Dank!
Ich habe auch in ASCII Tabelle folgende Zeile gesehen:

DEC    HEX    CHARACTER
0   0   NULL

Ich gebe Befehle (ASCII String) von PC nach Mikrocontroller. ATmega128 
leitet  das String weiter. Aber der soll diese NULL (DEC 0) richtig 
erkenen.

kann ich aber jetzt nicht per Tastatur eingeben. Wie mache ich dann 
weiter. Habt ihr noch Idee?

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Hm, stimmt natürlich. Dann müsste uns Mister Ju aber erst mal noch 
erklären wie sein String zum ATMega128 kommt. Also ob er ihn per 
Terminalprogramm schickt (und welche Einstellung dies hat) oder ob er 
ein Routine laufen lässt, die wirklich nur die Bytes sendet die er haben 
will.

von Fred (Gast)


Lesenswert?

> kann ich aber jetzt nicht per Tastatur eingeben. Wie mache ich dann
> weiter. Habt ihr noch Idee?

eine Null lässt sich glaube über die Tastatur eingeben!

nagelt mich jetzt aber nicht fest

entweder

Alt 0 0 0

oder

AlrGr 0 0 0

Gruß Fred

von Fred (Gast)


Lesenswert?

Alt ist es! Hab es gerade getestet.

Alt gedrückthalten und danach den ASCII Dezimalcode des Zeichens!

Gruß Fred

von Johnny (Gast)


Lesenswert?

Um ASCII Zeichen einzugeben / senden kannst Du im Terminal Programm 
einfach [Alt] drücken und gedrückt lassen, den dezimalen ASCII Wert 
eingeben und dann [Alt] loslassen.
Also z.B. [Alt halten]0[Alt loslassen] und schon wurde ein Nullzeichen 
eingegeben. Oder für 9: [Alt halten]57[Alt loslassen]

von Ju (Gast)


Lesenswert?

Das ist sehr nett von Euch!


Vielen Dank!!

von Ju (Gast)


Lesenswert?

Hallo Fred
Alt ist es! Hab es gerade getestet.
Alt gedrückthalten und danach den ASCII Dezimalcode des Zeichens!

Eine Kurze Frage habe ich vergessen.
Wie Gebe ich unter Windows solche ASCII Code ein? Also Wie hast du 
getestet?

Gruß
Ju

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Hallo Fred
> Alt ist es! Hab es gerade getestet.
> Alt gedrückthalten und danach den ASCII Dezimalcode des Zeichens!
>
> Eine Kurze Frage habe ich vergessen.
> Wie Gebe ich unter Windows solche ASCII Code ein? Also Wie hast du
> getestet?

Äh, genauso, wie Du selbst drei Zeilen weiter oben beschrieben hast:

> Alt gedrückthalten und danach den ASCII Dezimalcode des Zeichens!

von Fred (Gast)


Lesenswert?

@ Ju

nimm den Editor oder Wordpad aus dem Windows Zubehör.

ALT (Taste auf der Tastatur) gedrückthalten und nacheinander

zb 065 eingeben, danach ALT loslassen

dann soltest Du ein großes

"A" sehen!

065 = 0x41 = 0b1000001 = 0o101 = chr$(65) = "A"

Gruß Fred

von Fred (Gast)


Lesenswert?

@ Rufus t. Firefly

bitte Ju und Fred sauber auseinander halten!
sonst bin ich beleidigt :)

Fred

von Ju (Gast)


Lesenswert?

Bitte deine Entschuldigung!

Copy Paste habe ich zu schnell gemacht.

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.