22x36Font Ausgeben

Gast #5300272
Lesenswert?
• ▲
▼
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 #5300338
Lesenswert?
• ▲
▼
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 #5301057
Lesenswert?
• ▲
▼
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 #5301068
Lesenswert?
• ▲
▼
> 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

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.

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.