www.mikrocontroller.net

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


Autor: Ju (Gast)
Datum:

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

Autor: Εrnst B✶ (ernst)
Datum:

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

Autor: Fred (Gast)
Datum:

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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

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

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

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

Autor: Ju (Gast)
Datum:

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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

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

Autor: Fred (Gast)
Datum:

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

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alt ist es! Hab es gerade getestet.

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

Gruß Fred

Autor: Johnny (Gast)
Datum:

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

Autor: Ju (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist sehr nett von Euch!


Vielen Dank!!

Autor: Ju (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Fred (Gast)
Datum:

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

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Rufus t. Firefly

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

Fred

Autor: Ju (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte deine Entschuldigung!

Copy Paste habe ich zu schnell gemacht.

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.