Zweisprachiges Menü für ATmega8

OP #428046
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
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
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
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
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
>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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.