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
Ein String muss am Ende das Stringendezeichen 0x00 haben, ich sehe keines -> kein String denke ich
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.
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
Danke Spess, das gibt schon eine gute Auskunft. Aber Prinzipiell ist es möglich, die Werte in den Mega zu bekommen, oder? 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
Danke Matthias, genau das wars was ich gebraucht habe ;o) DANKE Dann vesuch ich das morgen mal! MFG Peter
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.