Hey Leute! Ich brauche für meinen ATmega8 eine zweisprachige Menüführung. Leider habe ich aber überhaupt keine Ahnung wie ich das realisieren soll... Das Menü besteht aus einigen Untermenüs in denen diverse Einstellungen vorgenommen werden können. Ich hoffe ihr könnt mir weiterhelfen. lg Patrick PS: Programmiert soll das ganze in "CVAVR-C", bedient über 4 Tasten (links, rechts, zurück, enter) und auf einem 2x20 Zeichen Display angezeigt werden.
ah hallo, Du speicherst die ganzen menüs in strings. char hauptmenu_de[x]="blabladeutsch"; char hauptmenu_en[x]="blablaenglisch"; char *hmtext; if(lang==de) { hmtext = &hauptmenu_de; //weitere menus } else { hmtext = &hauptmenu_en; //weitere } gruß Florian
Danke für die Antwort, aber ich komme jetzt auch nicht so ganz weiter... Bin leider noch Anfänger, daher brauche ich nocht etwas mehr hilfe... Also muss ich jetzt für jeden Punkt des Menüs einen eigenen string anlgen? ... char optionen_de[x]="blabladeutsch"; char optionen_en[x]="blablaenglisch"; ... Auf dem Display muss ich dann nur den hmtext und alle anderen texte ausgeben lassen, oder? lg Patrick
Schau dir doch mal das Menu vom AVR Butterfly an: http://www.atmel.com/dyn/products/tools_card.asp?family_id=607&family_name=AVR+8%2DBit+RISC+&tool_id=3146 .. das ist eine Statemachine. Da könntest du einfach eine weitere "Spalte" in deine "menu_state[]" einfügen. Viel Spaß Sebastian
crazy horse wrote:
> Warum ist nach "Vorschau" die angehängte Datei weg??
Wie gebe ich dann den Text aus?
lg Patrick
messages[2,29] Deutsches Menu: messages[0,n] Englisches Menu: messages[1,n] mit n = Menunummer:
Rahul Ghose wrote: > messages[2,29] > > Deutsches Menu: messages[0,n] > Englisches Menu: messages[1,n] > > mit n = Menunummer: Danke für die Antwort! Ich würde jetzt nur noch gerne wissen, wie ich dann z.B. messages[0,5] in einzelnen Zeichen ausgeben kann, da meine Displayroutine immer nur ein zeichen nach dem anderen aufs Display sendet... Gibts 'ne funktion, mit der man ein array in einen String umwandeln kann? lg Patrick
void write_messages (unsigned char x, unsigned char y, unsigned char msg_nr) {lcd_gotoxy (x,y); lcd_putsf (messages[sprache,msg_nr]); }
Der Beitrag ist zwar schon Hundsalt -.- aber für die jenigen, die's mal brauchen. Ich stand vor kurzem vor dem selben Problem. So hab ich's gelöst (Muss vor dem Compiling eingestellt werden): -Header-Datei msg.h angelegt und folgendes eingefügt:
1 | #ifndef __MSG_H
|
2 | #define __MSG_H
|
3 | |
4 | //0=deutsch, 1=englisch
|
5 | #define LANG 0
|
6 | |
7 | #if LANG == 0
|
8 | |
9 | #define TEXT1 "Deutsch"
|
10 | //...usw
|
11 | #else
|
12 | #define TEXT1 "Englisch"
|
13 | //...usw
|
14 | #endif
|
Im Programm selber kam dann z.B. sowas:
1 | #include "msg.h" |
2 | //...[vorheriger Code]
|
3 | lcd_puts(TEXT1); |
4 | //...[weiter geht's]
|
lg David
>So hab ich's gelöst (Muss vor dem Compiling eingestellt werden):
Das ist leider keine gute Lösung. Besser ist immer, wenn alle Sprachen
im Gerät vorhanden sind und vom Benutzer eingestellt werden können.
Anderfalls müßtest Du immer neuen Code für jede andere Sprache
erstellen. Ein hier produziertes Gerät kann damit ohne Änderung in alle
Nachbarländer verkauft werden.
Ein mehrdimensionales Feld mit entsprechender (Quell-)Textformatierung
ist zudem übersichtlicher. Beispiel bei einer mehrstelligen Anzeige soll
ein Menü für die Uhr ausgegeben werden:
" beeldscherm ", /* NL */
" jaar ",
" maand ",
" dag ",
" uur ",
" minuut ",
" seconde ",
" save ",
" afbreken ",
Gast schrieb: > Ein mehrdimensionales Feld mit entsprechender (Quell-)Textformatierung > ist zudem übersichtlicher. Stimmt, da hätte ich auch selber drauf kommen können ^^ So etwas hatte ich mal in Delphi verwendet. Den Wald vor lauter Bäumen[...] ...na, ja :D Ich werde das mal in einem Zukünftigen Projekt ausprobieren. lg David
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.