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:
{// special character Ä=x8E;ä=x84;Ö=x99;ö=x94;Ü=x9A;ü=x81;ß=xE1;µ=xE6
8
switch(Textnummer)
9
{
10
caseT_number1:display_write_char(0x40);break;
11
caseT_number2:display_write_char(0x50);break;
12
caseT_number3:display_write_char(0x60);break;
13
14
}
15
}
16
caseRUSSISCH:
17
{
18
19
switch(Textnummer)
20
{
21
22
caseT_number1:display_write_char(0x40);break;
23
caseT_number2:display_write_char(0x41);break;
24
caseT_number3:display_write_char(0x42);break;
25
26
}
27
}
28
29
30
}
31
32
returncharacter;
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
PROGMEMcharfont[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
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
PROGMEMcharfont[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
... bzw. würde es Sinn machen, für Sprachen, die den gleichen
Zeichensatz benutzen, noch ein weiteres Array einzuführen, damit man die
Zeichensätze nicht redundant vorhalten muss.