📄 lcd_base.cpp
字号:
#include "LCD\LCD_BASE.H"
extern int hz_handle;
extern char key_kbuf[18];
extern unsigned char key_kwrite;
int openhzk(char *s)
{
// hz_handle=open("d:\\test\\hzk16",O_RDONLY|O_BINARY);
hz_handle=open(s,O_RDONLY|O_BINARY);
if(hz_handle==-1)
{
cputs("Error on open hzk16");
getch();
closegraph();
exit(1);
}
return(hz_handle);
}
int getbit(unsigned char c,int n)
{
return((c>>n)&1);
}
int readkey()
{
int key;
static keybuf_pr=0;
//LCD keyboard
if (keybuf_pr==key_kwrite) key=-1;
else{
key=key_kbuf[keybuf_pr++];
keybuf_pr%=16;
key=translatekey(key);
}
return key;
/* //PC keyboard
if(bioskey(1))
return bioskey(0)&0xff;
else
return -1; */
}
char translatekey(char c)
{
switch(c)
{
case 0x38: c=0x0d; break; //Enter
case 0x30: c=0x1b; break; //Esc
case 0x34: c='0'; break;
case 0x33: c='1'; break;
case 0x32: c='2'; break;
case 0x31: c='3'; break;
case 0x37: c='4'; break;
case 0x36: c='5'; break;
case 0x35: c='6'; break;
case 0x3b: c='7'; break;
case 0x3a: c='8'; break;
case 0x39: c='9'; break;
}
return c;
}
int puthz16(int x,int y,int z,int color,char *p,char d,int angle)
{
unsigned int i,c1,c2,f=0;
int i1,i2,i3,rec;
long l;
char by[32];
while((i=*p++)!=0)
{
if (i>0xa1)
if(f==0)
{
c1=(i-0xa1)&0x07f;
f=1;
}
else
{
c2=(i-0xa1)&0x07f;
f=0;
rec=c1*94+c2;
l=rec*32L;
lseek(hz_handle,l,SEEK_SET);
read(hz_handle,by,32);
if(angle==0)
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*2+i2],7-i3))
putpixel(x+i2*8+i3,y+i1,color);
if(angle==90)
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*2+i2],7-i3))
putpixel(x+i1,y-i2*8-i3,color);
if(d=='h')
x=x+16+z;
if(d=='v')
{
if(angle==0)
y=y+16+z;
if(angle==90)
y=y-16-z;
}
}
}
return(x);
}
int puthz16_en(int x,int y,int z,int color,char *p,char d,int angle)
{
unsigned int i,c1,c2,f=0;
int i1,i2,i3,rec;
long l;
char by[32];
char buf[10];
settextjustify(LEFT_TEXT,BOTTOM_TEXT);
if (angle==0)
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
if (angle==90)
settextstyle(DEFAULT_FONT,VERT_DIR,1);
while((i=*p++)!=0)
{
if (i>0xa1)
{
if(f==0)
{
c1=(i-0xa1)&0x07f;
f=1;
}
else
{
c2=(i-0xa1)&0x07f;
f=0;
rec=c1*94+c2;
l=rec*32L;
lseek(hz_handle,l,SEEK_SET);
read(hz_handle,by,32);
if(angle==0)
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*2+i2],7-i3))
putpixel(x+i2*8+i3,y+i1,color);
if(angle==90)
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*2+i2],7-i3))
putpixel(x+i1,y-i2*8-i3,color);
if(d=='h')
x=x+16+z;
if(d=='v')
{
if(angle==0)
y=y+16+z;
if(angle==90)
y=y-16-z;
}
}
}
else
{
if ( (i==0x0d) || (i==0x0a) )
continue;
sprintf(buf,"%c",i&0xff);
outtextxy(x+12,y,buf);
if(d=='h')
x=x+8+z;
if(d=='v')
{
if(angle==0)
y=y+8+z;
if(angle==90)
y=y-8-z;
}
}
}
return(x);
}
//Lrg modify 2003-03-10
int puthz24_en(int x,int y,int z,int color,char *p,char d,int angle)
{
unsigned int i,c1,c2,f=0;
int i1,i2,i3,rec;
long l;
char by[72];
char buf[10];
settextjustify(LEFT_TEXT,BOTTOM_TEXT);
if (angle==0)
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
if (angle==90)
settextstyle(DEFAULT_FONT,VERT_DIR,1);
while((i=*p++)!=0)
{
if (i>0xa1)
{
if(f==0)
{
c1=(i-0xa1-0x0f)&0x07f;
f=1;
}
else
{
c2=(i-0xa1)&0x07f;
f=0;
rec=c1*94+c2;
l=(long)rec*72L;
lseek(hz_handle,l,SEEK_SET);
read(hz_handle,by,72);
if(angle==0)
for(i1=0;i1<24;i1++)
for(i2=0;i2<=2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*3+i2],7-i3))
putpixel(x+i1,y+i2*8+i3,color);
if(angle==90)
for(i1=0;i1<24;i1++)
for(i2=0;i2<=2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*3+i2],7-i3))
putpixel(x+i2*8+i3,y-i1,color);
if(d=='h')
x=x+24+z;
if(d=='v')
{
if(angle==0)
y=y+24+z;
if(angle==90)
y=y-24-z;
}
}
}
else
{
if ( (i==0x0d) || (i==0x0a) )
continue;
sprintf(buf,"%c",i&0xff);
outtextxy(x+12,y,buf);
if(d=='h')
x=x+8+z;
if(d=='v')
{
if(angle==0)
y=y+8+z;
if(angle==90)
y=y-8-z;
}
}
}
return(x);
}
void closehzk()
{
close(hz_handle);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -