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
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
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.
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
Andere Möglichkeit: Definier dir ein selten benutztes Sonderzeichen als Trenner,zb §, und modifiziere deine Ausgaberoutine dahingehend, dass sie ein § bei der Ausgabe durch ein \0 ersetzt.
Das ist ne super Idee.Ich probiere es heut gleich mal aus. Das §-zeichen ist ja wie dafür gemacht :-) Gruß Mario
Hallo Karl Heinz Das war ne gute Idee. Funktioniert hervorragend. Durchsuche beim Sendevorgang den String nach § und ersetze ihn durch 0x0D. Gruß Mario
Mario schrieb: > Durchsuche beim > Sendevorgang den String nach § und ersetze ihn durch 0x0D ich dachte du wolltest eine \0 drin haben? eine 0x0D kannst du doch auch so reinschreiben.
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
Mario schrieb: > Das ich die 0D mitten im String mitsenden kann ist mir nicht gelungen. 0x0D ist ein '\r' unsigned char[] = "#DL,#AB1,0,0,Licht\r,#BC0,3,3,Test\r";
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.
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.
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.
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.