22x36Font Ausgeben

Gast #5300272
Moin
 Ich habe einen Font 22x36, mit meiner Routine zum auslesen klappt dies 
aber nicht .

Was mache ich hier Falsch?
mfg

1
//mit 6x8 Font geht's , mit 22x36 klappt dies leider nicht.
2
void Lcd_writechar(unsigned char c)
3
{   unsigned char x,y,w;
4
    for (y=0; y<8; y++)
5
    {   w=font[c][y];
6
        for (x=0; x<6; x++)
7
        {   if (w&1)
8
                Lcd_setpixel(x,y);
9
            else
10
                Lcd_clrpixel(x,y);
11
            w=w>>1;
12
        }   
13
    }
14
}
Angehängte Dateien:
Gast
JULIAN schrieb:
> Ich habe einen Font 22x36, mit meiner Routine zum auslesen klappt dies
> aber nicht .

Tja, traurig, gelle?

Also als erstes brauchst du eine Information, wie dein Font überhaupt 
aufgebaut ist, also was für eine Struktur er hat. Aber bei den Geraffel, 
was in deiner .h drinsteht, ist von sowas garnichts zu sehen.

Obendrein krieg ich nen Krampf, wenn ich sowas lesen muß:
const char font[256][108]=...

Mein Rat: beschaffe dir ein GDI mit ner Zeichenausgabe, die du verstehen 
und nachvollziehen kannst und beschaffe dir dazu passende Fonts.

Und nochwas: Zeugs wie Fonts gehört NICHT in eine .h Datei, sondern 
entweder als .inc in die .c Datei des GDI inkludiert oder als separate 
.c Datei, zu der natürlich eine .h gehört, die in alle anderen Quellen 
wie üblich inkludiert wird und deswegen nur die üblichen Definitionen 
enthält, aber nicht die Konstantenfelder selbst.

W.S.
Gast
JULIAN schrieb:
> void Lcd_writechar(unsigned char c)
> {   unsigned char x,y,w;
>     for (y=0; y<8; y++)
>     {   w=font
1
[y];
2
>         for (x=0; x<6; x++)
3
>         {   if (w&1)
4
>                 Lcd_setpixel(x,y);
5
>             else
6
>                 Lcd_clrpixel(x,y);
7
>             w=w>>1;
8
>         }
9
>     }
10
> }
11

12

13
Also so kommt nur Pixelsalat raus
14

15
[c]
16
void Lcd_writechar(unsigned char c)
17
{
18
  unsigned char x,y,w,n=0,x2=0,y2=0;
19
  for (y=0; y<36; y++)
20
  {   
21
     for(n=0; n<3; n++)
22
     {
23
        w=font[c][y+n];
24
        for (x=0; x<22; x++)
25
        {   
26
           if (w&1)
27
              LCD_setpixel(50+x, 100+y);
28
           else
29
              LCD_clrpixel(50+x, 100+y);
30
           w=w>>1;
31
        
32
           x2++;
33
        }
34
     }
35
     y2++;
36
     x2=0; 
37
  } 
38
}
Gast
> Also so kommt nur Pixelsalat raus

Tja, das leben kann SOOOOO hart sein!

Genau jetzt ist der Moment gekommen wo du deinen Code im Debugger im 
Singlestep durchgehen solltest. Und dann verfolgst du mal wann er 
welches Bit ausgibt und ueberlegst dir ob das dem entspricht was du dir 
gedacht hast als du das programmiert hast.
Das scheint mir eine relativ angenehme Moeglichkeit fuer die 
Tranformation von dumm nach klug. Frueher war das aufwendiger. :-)

Olaf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.