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
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
chartest[]="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
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
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
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
>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
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