Ich habe folgendes Problem. Ich möchte auf einem Grafikdisplay
unterschiedliche Schriftgrössen ausgeben. Zu diesem Zweck soll in der
Printfunktion ein Pointer auf das entsprechende Array welches den
Zeichensatz enthält zeigen. Dies funktioniert allerdings nicht. Wenn ich
statt dem Pointer direkt ein bestimmtes Array anspreche funktioniert es
Problemlos. Ich hab den Code soweit reduziert, dass nur der Charoffset
vom Pointer geholt werden soll, dies funktioniert aber auch schon nicht.
Um folgendes Zeile geht es
1 | pucCommand1[2] = (ulX + *(ulFont+ucTemp)-1);
|
Ich will den Inhalt der von Font6[ucTemp] ansprechen und um 1 reduzieren
Hier noch der ganze Code
1 | void drawString(const char *pcStr, unsigned long ulX, unsigned long ulY, unsigned long size) {
|
2 |
|
3 | int charPointer;
|
4 | unsigned char ucTemp;
|
5 | unsigned char pucCommand1[6];
|
6 | unsigned long *ulFont;
|
7 | pucCommand1[0] = 0x21;
|
8 | pucCommand1[3] = 0x22;
|
9 | while (*pcStr != 0) {
|
10 |
|
11 | ucTemp = *pcStr++ & 0x7f;
|
12 | charPointer = 0;
|
13 | if (ucTemp < ' ') {
|
14 | ucTemp = 0;
|
15 | } else {
|
16 | ucTemp -= ' ';
|
17 | }
|
18 | if (size == 6)
|
19 | ulFont = Font6;
|
20 | else if (size == 3)
|
21 | ulFont = &Font3[0];
|
22 | else {
|
23 | size = 3;
|
24 | ulFont = &Font3[0];
|
25 | }
|
26 |
|
27 | pucCommand1[1] = ulX;
|
28 | pucCommand1[2] = (ulX + *(ulFont+ucTemp)-1);
|
29 | pucCommand1[4] = ulY;
|
30 | pucCommand1[5] = ulY + 5;
|
31 | sendCommand(pucCommand1, sizeof(pucCommand1) / sizeof(pucCommand1[0]));
|
32 |
|
33 | for (int i = 0; i < ucTemp; i++) {
|
34 | charPointer += (Font6[i]) * size;
|
35 | }
|
36 | sendData((&Font6[charPointer+96]), (Font6[ucTemp])*size);
|
37 | ulX += (Font6[ucTemp])+2;
|
38 | }
|
39 | }
|