String mit Steuerzeichen

Gast #2589760
Lesenswert?

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
Gast #2590027
Lesenswert?

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 #2590036
Lesenswert?

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 #2590075
Lesenswert?

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 #2590639
Lesenswert?

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 #2590690
Lesenswert?

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 #2590693
Lesenswert?

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 #2590760
Lesenswert?

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

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