www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zweisprachiges Menü für ATmega8


Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder so:

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
crazy horse wrote:
> oder so:

???

Wie? =o)

lg

Autor: crazy horse (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Warum ist nach "Vorschau" die angehängte Datei weg??

Autor: Sebastian Arnd (seba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir doch mal das Menu vom AVR Butterfly an:
http://www.atmel.com/dyn/products/tools_card.asp?f...
.. das ist eine Statemachine. Da könntest du einfach eine weitere 
"Spalte" in deine "menu_state[]" einfügen.

Viel Spaß Sebastian

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
crazy horse wrote:
> Warum ist nach "Vorschau" die angehängte Datei weg??

Wie gebe ich dann den Text aus?


lg Patrick

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
messages[2,29]

Deutsches Menu: messages[0,n]
Englisches Menu: messages[1,n]

mit n = Menunummer:

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void write_messages (unsigned char x, unsigned char y, unsigned char 
msg_nr)
{lcd_gotoxy (x,y);
lcd_putsf (messages[sprache,msg_nr]);
}

Autor: David F.r. (miyu)
Datum:

Bewertung
0 lesenswert
nicht 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:
#ifndef __MSG_H
#define __MSG_H

//0=deutsch, 1=englisch
#define LANG 0

#if LANG == 0

#define TEXT1 "Deutsch"
//...usw
#else
#define TEXT1 "Englisch"
//...usw
#endif

Im Programm selber kam dann z.B. sowas:
#include "msg.h"
//...[vorheriger Code]
lcd_puts(TEXT1);
//...[weiter geht's]


lg David

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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   ",

Autor: David F.r. (miyu)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.