Hallo zusammen,
ich habe eine Menüführung mit LCD Ausgabe programmiert.
Da das Menü auch länger sein kann, als auf eine Zeile im LCD Display
passt, soll ein Zeichen (Code 126 (Pfeil rechts Symbol)) am Ende
signalisieren, daß rechts noch mehr kommt.
Bewegt der Anwender sich auf einen solchen weiter rechts liegenden
Menüpunkt,
soll an der linkesten Display Stelle das Zeichen mit dem Ascii Code 127
(Pfeil links) signalisieren, daß weiter links noch was kommt.
ich bastle zunächst die gesamte Menüzeile zusammen, extrahiere daraus
den zur Zeit gültigen Teil und füge per strcat die Pfeile und den
aktuellen Menütext zusammen.
lcdout ist als char lcdout[17] deklariert und mit \0 gefüllt. In char
*menu steht der aktuelle Menüinhalt und ist auch max. 14 Zeichen lang.
mache ich das so:
1 | strcat(lcdout, "⌂"); // Alt+127 auf der Zehnertastatur
|
2 | strcat(lcdout, menu);
|
3 | strcat(lcdout, "~"); // Alt+126 auf der Zehnertastatur
|
Dann stimmt das Zeichen am Ende, das am Anfang ist aber ein vollkommen
falsches Zeichen.
Mache ich es hingegen so:
1 | *lcdout = 127;
|
2 | strcat(lcdout, menu);
|
3 | strcat(lcdout, "~");
|
dann passt die Ausgabe. Kann mir jemand dieses Verhalten erklären?
Viele Grüße
Michl