700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 读取字库数据到缓冲区的方法

读取字库数据到缓冲区的方法

时间:2021-05-23 18:16:45

相关推荐

读取字库数据到缓冲区的方法

(-06-05)

/zhaojun_xf/blog/static/30050580027103831591/

/**************************************************************************************

* FunctionName : PrinterReadOneChar()

* Description : 从字库中读取一个字符放入缓冲区

* EntryParameter : ptr - 字符编码,num - 数据存放打印缓冲的位置

* ReturnValue : None

**************************************************************************************/

void PrinterReadOneChar8x16(uint8 *ptr, uint8 num)

{

uint8 i;

for (i=0; i<16; i++) // 0x20以前的字符没有使用

{

PrinterBuf[i][num] = SSTReadByte(FontStartEn8x16 + ((*ptr-0x20)*16) + i);

}

}

/**************************************************************************************

* FunctionName : PrinterReadOneChinese()

* Description : 从字库中读取一个汉字放入缓冲区

* EntryParameter : ptr - 字符编码,num - 数据存放打印缓冲的位置

* ReturnValue : None

**************************************************************************************/

void PrinterReadOneChinese16x16(uint8 *ptr, uint8 num)

{

uint8 i, k=0, count;

uint32 offSet;

count = 16*16 / 8; // 一个汉字多少字节

offSet = ((*ptr - 0xA1)*94 + (*(ptr+1) - 0xA1))*count; // 汉字的地址是从0xA1A1开始

for (i=0; i<count; i+=2)

{

PrinterBuf[k][num] = SSTReadByte(FontStartCn16x16 + offSet + i); // 读左边8位

PrinterBuf[k][num+1] = SSTReadByte(FontStartCn16x16 + offSet + i + 1); // 读右边8位

k++;

}

}

/**************************************************************************************

* FunctionName : PrinterReadOneBuffer()

* Description : 从缓冲区读取一行文字到打印缓冲区

* EntryParameter : buf - 缓冲区;startAddr - 读取起始地址;endAddr - 读取结束地址

* ReturnValue : None

**************************************************************************************/

void PrinterReadOneBuffer16(uint8 *buf, uint32 startAddr, uint32 endAddr)

{

uint8 i = 0;

uint8 *tmp;

while (i < (endAddr-startAddr))

{

tmp = buf+startAddr+i; // ASCII字符与汉字内码的区别在于128

if (*tmp <= 0x80) // ASCII < 128

{

PrinterReadOneChar(tmp, i); // 把字符的显示数据放入打印缓冲

i++;

}

else // 汉字 > 128

{

PrinterReadOneChinese(tmp, i); // 把汉字的显示数据放入打印缓冲

i += 2;

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。