Ist das überhaupt ein String?

Gast #836254
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
#836273
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.
1
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
1
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.
Gast #836285
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
Gast #836289
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
Gast #836299
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
Gast #836302
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
Gast #836309
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren