String mit Steuerzeichen

Gast #2589760
Hallo
Ich stehe vor einem Problem. Hab das ediptft-43 am laufen und komme 
jetzt recht gut mit klar. Wenn ich Taster oder Schalter erstelle sende 
ich einen String der Steuerzeichen enthalten muß. Ich benutze Codevision 
und einen Mega644.Hier mal ein Beispiel.

unsigned char[] = "#DL,#AB1,0,0,Licht,#BC0,3,3,Test";

Nach Licht und Test muß eine \0 eingefügt werden.Würde es auch mit 0x0D 
probieren. Im Terminalprogramm funktioniert es auch. Weiß nicht ob es im 
String mit /0 probleme gibt.
Wie kann ich in einem String Steuerzeichen einfügen das es Codevision 
auch versteht?

Gruß Mario
Das geht m.M. gar nicht. In C ist 0x00 als String-Ende-Zeichen 
definiert. Da wirst Du wohl oder übel mit 4 Ausgabe-Befehlen arbeiten 
müssen: 1. Text, dann 0x00, dann 2. Text, dann 0x00

(sagt einer, der nur rudimentäre C-Kenntnisse hat.)

Gruß
Ralf
Gast
Hi Ralf
Vielen Dank für die schnelle Antwort.
Ich denke auch das es nicht anders geht.
Dann muß ich wohl oder übel für jeden Taster einen neuen String 
erstellen.
Ich kopiere ihn ja in einen anderen String (buffer) da wird ja 
hoffentlich die \0 angefügt.

Gruß Mario
Gast
es geht auch anders, du musst es ja nicht als string sehen sonder als 
char array und dort können alle zeichen drin stehen. Du brauchst nur 
noch ein zusätzliche Variabele mit der anzahl von Zeichen in dem array. 
Du kann dann aber keine String funktionen damit verwenden.
Gast
Als String wär mir aber ganz recht weil ich viele davon fertig habe die 
auch ohne Steuerzeichen sind und gut funktionieren. Ich werde heut mal 
versuchen für jede Taste ein String zu basteln. Habe im Datenblatt von 
meinem Display auch gerade gelesen das ich max 200 byte versenden darf. 
Meine fünf Taster überschreiten dies aber bei weitem. Trotzdem vielen 
Dank Peter. Werde mir die Lösung für´s nächste Projekt merken.
Gruß Mario
Gast
Hallo Karl Heinz
Das war ne gute Idee. Funktioniert hervorragend. Durchsuche beim 
Sendevorgang den String nach § und ersetze ihn durch 0x0D.

Gruß Mario
Gast
Ich habe es mit einer \0 probiert.Dann habe ich mir den String angeguckt 
und mußte feststellen das der String an dieser Stelle beendet ist.Alles 
was danach folgt ist weg.Das habe ich auch befürchtet.Habs einfach mal 
mit 0x0D probiert und es geht komischerweise auch obwohl laut Datenblatt 
eine \0 geschickt werden muß.
Das ich die 0D mitten im String mitsenden kann ist mir nicht gelungen.
Gr. Mario
Gast
Wenn ich \r in den String schreibe gibt er mir 5C 72 aus. Das hab ich 
alles schon probiert.Liegt wahrscheinlich an den " vom String.Aber die 
Sache mit dem Sonderzeichen klappt hervorragend.
Vielen Dank euch allen für die schnelle Hilfe.
Gast
das stimm doch was nicht. Wenn du später ein \r einsetzt geht es, wenn 
du es gleich mitschickt dann nicht. Ich würde der sache schon mal auf 
den Grund gehen, nicht das du noch irgendwo einen anderen Fehler hast.
Gast
Das muß irgendwie mit Codevision und den Anführungszeichen zu tun 
haben.Alles was in den Anführungszeichen steht wird als Zeichen 
ausgegeben.Ich lese den String dann byteweise aus und sende die Zeichen 
einzeln.Wenn jetzt mein $ auftaucht ersetze ich es mit 0x0D.
if(buf[i]==0x24){buf[i]=0x0D;}
Geht super.Der Rest läuft auch.Bin schon beim Menü basteln.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.