PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitte Hilfe für Stringkonstante, speziell für EEPROM



oberallgeier
14.08.2013, 13:50
Bitte um Hilfe.

Aufgabe:
Eine Stringkonstante muss erstellt werden, insbes. für ein LCD. Sie wird im EEPROM abgelegt und bei Bedarf ausgelesen. Die Konstanten dieses zweidimensionalen Vektors stellen wählbare Menuepunkte vor, hier die Testversion in der aktuellen Form:

u8 MNUnam [][9] // Namen der einzelnen Menues STETS 8 char
EEMEM = { "menu 0 ",
"menu 1 ", "menu 2 ",
" Batt ", "rtLED on",
"SV+-manu", "SV+-auto",
"menu 7 ", "menu 8 ",
"Servo +-", "menu 10 ",
"menu 11 ", "menu 12 ",
"menu 13 ", "menu 14 ",
"menu 15 ", "menu 16 ",
"menu 17 ", "menu 18 ",
"Abbruch " } ;

Nun habe ich im LCD das Sonderzeichen ± erstellt, das ich dort auch statt des dämlichen +- verwenden möchte und als Zeichen aus dem Flash auch darstellen kann (siehe Code unten). Leider fehlt mir jede Ahnung, wie ich meinen Headercode schreibe, damit ich dieses Sonderzeichen statt der zwei Zeichen reinbekomme, sprich: ich möchte >>im Endeffekt<< diese funktionierende Sequenz:

lcd_clear(); lcd_string("Servo "); lcd_data( 3 ); //bekommen, die mir derzeit (aus dem Flash) aufs LCD ein "Servo ±" ausgibt und dies statt des oben gezeigten Strings "Servo +-" im EEPROM speichern.

Frage: wie sieht die Codezeile aus ??

Danke für Hilfe

sternst
14.08.2013, 15:30
"Servo \003"

oberallgeier
14.08.2013, 18:22
Danke Stefan. Wenn man weiß wie´s geht, dann ist es sogar logisch: \r. Geht prima, nochmal danke. Werd heute Abend mal die zugehörige Definition suchen . . .

Nachtrag: Aha - es geht um Escape-Sequenzen (http://www.ling.uni-potsdam.de/~kolb/c-kurs/steuerz.html) *gg*.

oberallgeier
21.08.2013, 17:45
Danke Stefan, nochmals. Denn jetzt weiß ich endlich, wie ich ein "ä" fürs LCD in den Code einbringen ("w\xE1hlbar "), ohne da ein "á" zu schreiben, oder hinterherdackelnd in den Platzhalter mit

SetCursor (2, 1); lcd_data (225); // "ä" das Zeichen reinzufrickeln. Und so bekomme ich ja bei Bedarf die ganze erweiterte ASCII-Gesellschaft rein *gg*.

sternst
21.08.2013, 19:03
Zwei Anmerkungen noch dazu:

1)
Es hat einen Grund, warum ich die oktale Variante gewählt hatte. Die ist nämlich auf 3 Stellen begrenzt. Die Hex-Variante hat keine Begrenzung, so dass du ein kleines Problem bekommst, wenn das erste Zeichen dahinter eine gültige Hex-Ziffer ist.

2)
Es ist ein wenig lesbarer (meiner Meinung nach), wenn du die Codes in Makros packst:
(nebenbei hat sich damit auch das Problem aus 1 erledigt)
#define AE "\xE1"

char text[] = "w"AE"hlbar ";

oberallgeier
21.08.2013, 19:32
... Es hat einen Grund ... oktale Variante ... Hex-Variante hat keine Begrenzung ... kleines Problem ...Gibs zu, Du hattest bei meinen ersten Versuchen zugesehen ; - ) .


... Es ist ein wenig lesbarer (meiner Meinung nach), wenn du die Codes in Makros packst ...Danke. Makros kann ich ja (inzwischen auch) und nutze die. Öfters, nicht immer.