Zahada v C

Pavel Hudeček edizon na seznam.cz
Čtvrtek Prosinec 11 10:26:04 CET 2014


To asi moc nepomůže. dispMezera slouží pro oddělování tisíců a neumožňuje 
posun o víc než 3. Prodlužuje totiž zobrazování znaku v rámci toho, že je 
široký 5, ale font je z celých bajtů:




void dispChr(unsigned char c) { // -----------------------------------------
-----------
.  unsigned int n;
.  unsigned char a, b;

.  switch (c) {
.    case 9: if (dispX<(240-48)) dispX+=48; return;
.    case 13: if (dispY<(320-8)) dispY+=8; else dispY=0; dispX=0; return;
.    default: if (c<32) return;
.  }
.  if (dispMezera>3) dispMezera=3;
.  n=(c-32)*7+4;
.  dispBlok(dispX, dispY, 4+dispMezera, 8);

.  ili_wrcmd(0x2c);
.  for (b=0; b<7; b++) {
.    for (a=0; a<5+dispMezera; a++) {
.      if (font5x7[n+b] & (1<<a)) ili_wrI16(); else ili_wrP16();
.    }
.  }
.  for (a=0; a<5+dispMezera; a++) ili_wrP16();
.  dispX+=a;
.  if (dispX>234) {
.    dispX=0; dispY+=8;
.    if (dispY>320) {dispX=0; dispY=0;}
.  }
.  dispMezera=1;
}




PH




Od: Pavel Troller patrol na sinus.cz(mailto:patrol na sinus.cz)

"toto mne take napadlo. Mel jsem podezreni na "zdrhnuti" Y pozice.
Mozna by bylo dobre zavolat pred vypisem DispXY(16,0); .

> Tazko povedat, chyba moze byt vo zvysku, ktory nevidime, napr. nemoze
> dispChr() za urcitych okolnosti (napr. nastavene dispMezera) "pisat"
> niekde "mimo zorne pole"? Nepomoze ak sa namiesto nastavenia dispMezera
> zavola dispChr(' ')?"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20141211/1903a2db/attachment.html>


Další informace o konferenci Hw-list