versch. Zeichsätze setzen

Gast #2619863
Lesenswert?

Hallo,

Ich habe folgendes Problem: Ich habe eine Software, die in mehreren 
Sprachen verfügbar ist. Nun möchte ich diese so erweitern, dass sie z.B. 
auch in Russisch also in Kyrillisch verfügbar ist. Dazu sind 
verschiedene Zeichensätze nötig.
Die Sprachumschaltung mache ich mit Switch Befehlen. Nun die Frage ist 
wie ich die Zeichensätze innerhalb der Switch Anweisungen "Setzen" kann.


Hier der Auszug aus meinem Programm:
1
char Textregister(unsigned char Sprache, unsigned char Textnummer)
2
{
3
 char character = 0;
4
  switch(Sprache)
5
  {
6
     case ENGLISCH:
7
    {// special character Ä=x8E;ä=x84;Ö=x99;ö=x94;Ü=x9A;ü=x81;ß=xE1;µ=xE6
8
      switch(Textnummer)
9
      {
10
        case T_number1:                display_write_char(0x40);      break;
11
        case T_number2:              display_write_char(0x50);      break;
12
        case T_number3:               display_write_char(0x60);      break;
13
      
14
      }
15
    }
16
     case RUSSISCH:      
17
    {
18
      
19
      switch(Textnummer)
20
      {
21
        
22
        case T_number1:                display_write_char(0x40);      break;
23
        case T_number2:              display_write_char(0x41);      break;
24
        case T_number3:               display_write_char(0x42);      break;
25
      
26
      }
27
    }
28
    
29
    
30
  }
31

32
 return character;
33
}

Um den entsprechenden Zeichensatz zu setzen habe ich manuell mit #define 
FONT2 gearbeitet, das funktioniert aber leider nicht innerhalb der 
switch anweisung.

hier noch ein Teilauszug aus dem Zeichensatz
1
#if defined FONT2
2
    #define FONT_WIDTH 7
3
    #define FONT_HEIGHT 8  //8, 16, 32, 64, 128
4

5
    PROGMEM char font[256][7]={  
6
    {0x60, 0x3C, 0x22, 0x3C, 0x60, 0x00, 0x00},  // 0x00 Code for char 
7
        {0x7E, 0x52, 0x20, 0x00, 0x00, 0x00, 0x00},  // Code for char 
8
        {0x00, 0x7E, 0x4A, 0x34, 0x00, 0x00, 0x00},  // Code for char 
9
        {0x00, 0x7E, 0x02, 0x02, 0x00, 0x00, 0x00},  // Code for char

Vielen Dank im Voraus für Eure Hilfe

gruß Thomas
Gast #2620768
Lesenswert?

Hm, naja, die Frage ist ja, ob Du wirklich nur den Zeichensatz 
umschalten willst - oder nicht auch die Texte als String-Arrays ablegst.

Wenn Du veränderbare Werte auf dem Display hast (d. h. Du benötigst z. 
B. die Zahlen von 0 bis 9), dann macht es Sinn, diese in jedem 
Zeichensatz an derselben Position abzulegen.
Die einzelnen Zeichen in den Strings wiederum verweisen auf das 
entsprechende Zeichen im Font.

z. B. (auf die Schnelle hingeklatscht):
1
    PROGMEM char font[NUM_LANGUAGES][256][7]={
2
      {
3
        {0x60, 0x3C, 0x22, 0x3C, 0x60, 0x00, 0x00},  // 0x00 Code for char 
4
        {0x7E, 0x52, 0x20, 0x00, 0x00, 0x00, 0x00},  // Code for char 
5
        {0x00, 0x7E, 0x4A, 0x34, 0x00, 0x00, 0x00},  // Code for char 
6
        {0x00, 0x7E, 0x02, 0x02, 0x00, 0x00, 0x00},  // Code for char 
7
      }
8
    };
9

10
const char str11[] PROGMEM = "\x01\x27\x43"; // deutscherstring1
11
const char str12[] PROGMEM = "..."; // englishstring1
12
const char str13[] PROGMEM = "..."; // xxxstring1
13
const char str21[] PROGMEM = "..."; // deutscherstring2
14
const char str22[] PROGMEM = "..."; // englishstring2
15
const char str23[] PROGMEM = "..."; // xxxstring2
16
 
17
const char * const strarray1[NUM_LANGUAGES][] PROGMEM = {
18
   { str11, str21 },
19
   { str12, str22 },
20
   { str13, str23 }
21
};

... und dann einfach entsprechend dereferenzieren.

Geht das in die Richtung der Fragestellung?

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