www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ArrayPointer in C


Autor: Junker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
pucCommand1[2] = (ulX + *(ulFont+ucTemp)-1);

Ich will den Inhalt der von Font6[ucTemp] ansprechen und um 1 reduzieren

Hier noch der ganze Code
void drawString(const char *pcStr, unsigned long ulX, unsigned long ulY, unsigned long size) {

  int charPointer;
  unsigned char ucTemp;
  unsigned char pucCommand1[6];
  unsigned long *ulFont;
  pucCommand1[0] = 0x21;
  pucCommand1[3] = 0x22;
  while (*pcStr != 0) {

    ucTemp = *pcStr++ & 0x7f;
    charPointer = 0;
    if (ucTemp < ' ') {
      ucTemp = 0;
    } else {
      ucTemp -= ' ';
    }
    if (size == 6)
      ulFont = Font6;
    else if (size == 3)
      ulFont = &Font3[0];
    else {
      size = 3;
      ulFont = &Font3[0];
    }

    pucCommand1[1] = ulX;
    pucCommand1[2] = (ulX + *(ulFont+ucTemp)-1);
    pucCommand1[4] = ulY;
    pucCommand1[5] = ulY + 5;
    sendCommand(pucCommand1, sizeof(pucCommand1) / sizeof(pucCommand1[0]));

    for (int i = 0; i < ucTemp; i++) {
      charPointer += (Font6[i]) * size;
    }
    sendData((&Font6[charPointer+96]), (Font6[ucTemp])*size);
    ulX += (Font6[ucTemp])+2;
  }
}

Autor: Yagan Ζ. Dongobar (yagan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Junker,

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

Ciao, Yagan

Autor: Junker (Gast)
Datum:

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

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.