Zweisprachiges Menü für ATmega8

OP #428046
Lesenswert?

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

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
OP #428063
Lesenswert?

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
OP #428576
Lesenswert?

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

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

>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   ",
#1446073
Lesenswert?

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

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