mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ist das überhaupt ein String?


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe schon mal einen Thread begonnen, aber da wusste ich noch nicht 
so bescheid über das alles.

Also eine kurze Frage: Ist das überhaupt ein String, den man da im 
Terminal sehen kann?
Ein String mit 21 Bytes?
http://img120.imageshack.us/img120/6443/telegrammul2.jpg

Irgendwo habe ich mal gelesen, dass ein String am Ende mit irgendwas 
bestätigt wird.

Danke,
MFG Peter

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein String muss am Ende das Stringendezeichen 0x00 haben, ich sehe 
keines -> kein String denke ich

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz allgemein ist ein String eine Zeichenkette. Ein String enthält 
eigentlich nur lesbare Zeichen (ASCII). Ich selbst würde so eine 
Zeichenfolge mit 0xFF etc niemals als String bezeichnen.

>Irgendwo habe ich mal gelesen, dass ein String am Ende mit irgendwas
>bestätigt wird.
Joa, in C wird ein String mit einer binären Null ('\0') abgeschlossen. 
Diese Terminierung geschieht automatisch beim einfassen des Strings in ' 
" '.
Also z.B.
char test[] = "Ich bin ein String";
Im Speicher steht dann dieser String mit einer "\0" am ende. Daran kann 
bei der Ausgabe dann erkannt werden wo dieser zuende ist.
Das gleiches würde auch folgende Anweisung machen
char test[] = {'I','c','h',' ','b','i','n',' ','e','i','n',' ','S','t','r','i','n','g','\0'};
Auf dem Terminal wird diese Stringterminierung jedoch nicht ausgegeben.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Das ist eine Frage der Definition. Ein String besteht im allgemeinen aus 
einer Folge von lesbaren Zeichen + einige Sonderzeichen. In C wird ein 
String mit $00 abgeschlossen. In Pascal enthält das erste Byte die Länge 
des Strings (ohne Endekennzeichen). Textverarbeitungen benutzen '$0D 
$0A' als Zeilentrenner. Wird auch bei Datenübertragungen von Text auch 
sehr häufig benutzt.
Die Aufzählung ist mehr als unvollständig (habe jetzt keine Lust Romane 
zu schreiben). Sollte nur verschiedene Sichtweisen verdeutlichen.
Das was in deinem Anhang zu erkennen ist, sieht nach einer Folge von 
Hex-Werten aus. ASCII-Zeichen sind nicht so richtig zu erkennen.

MfG Spess

Autor: Timbo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

jetzt bin ich mir noch immer nicht im klaren.

Jonas sagt ja NEIN.

Timmo:???Schon oder?

Die bessere Frage ist aber, wie ich diese Bytes in einen Mega8 bekomme 
mit Bascom?

String jetzt JA oder Nein?

Ihr müsst entschuldigen, ich bin Maschinenbauer....;o)

MFg Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Spess,

das gibt schon eine gute Auskunft.

Aber Prinzipiell ist es möglich, die Werte in den Mega zu bekommen, 
oder?

MFG Peter

Autor: Bender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Matthias Kölling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie willst Du sie denn in Deinen Controller bekommen? Per UART - dann 
tus einfach! Die UART kennt keine Strings. Die kennt nur Zeichen. Du 
mußt nur wissen, wo das Ende ist. Das kann ein besonderes Zeichen sein 
oder Du kennst die Anzahl. Es kann aber auch sein, dass ständig Zeichen 
angepurzelt kommen. Dann schaufelst Du das Zeug einfach im Interrupt in 
einen Ringpuffer. Dazu benutzt Du einen Schreibzeiger. In der main-loop 
liest Du aus dem Ringpuffer aus bis die Zeiger gleich sind. Dann liegt 
es an Dir, was Du damit machst. Viel Spaß beim "Strings" empfangen.

Gruß Matthias

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die bessere Frage ist aber, wie ich diese Bytes in einen Mega8 bekomme
z.B. mit Rx-Interrupt einlesen
Was diese Byte-Folge, nennen wir sie Telegramm, bedeutet
sollte in einem Protokoll definiert sein

>mit Bascom?
geht sicher auch mit Bascom

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Matthias,

genau das wars was ich gebraucht habe ;o) DANKE

Dann vesuch ich das morgen mal!

MFG Peter

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Der Mega kennt von Haus aus keine Strings. Zeichen werden einzeln als 
Bytes empfangen. In Assembler hast du die volle Kontrolle, wie diese 
Bytes interpretiert werden. Wie die Bytes in 'höheren' 
Programmiersprachen verarbeitet werden ist unterschiedlich. U.U. kann 
auch ein Array der geeignete Empfangsort sein.
Ich weiss nicht, wo die Daten herkommen. Wenn es Pakete mit definierter 
Länge sind, sollte es machbar sein. Bei einem kontinuierlichen 
Datenstrom hast du natürlich ein Problem.

MfG Spess

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.