Forum: Mikrocontroller und Digitale Elektronik ArrayPointer in C


von Junker (Gast)


Lesenswert?

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
}

von Yagan Ζ. D. (yagan)


Lesenswert?

Junker,

wie sind denn Font3 bzw. Font6 deklariert?
Weshalb 'unsigned long *ulFont'?

Ciao, Yagan

von Junker (Gast)


Lesenswert?

Danke :D
Wurde in unsigned char * geändert und nun funktionierts. Manchmal sitzt 
man einfach zu nah vor dem Problem

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.