关于Get_HzMat(u8 *code,u8 *mat,u8 size)函数还是有些不解,心里总是不踏实;请指点,谢谢!
void Get_HzMat(u8 *code,u8 *mat,u8 size)
{
u8 qh,ql;
u8 i;
u32 foffset;
qh=*code; //code是一个指针,*code就是把code指向的值赋给qh
ql=*(++code);//把*code+1后赋值给ql
if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//非常用汉字,汉字是从0x81区开始的
{ //汉字点阵库区位码按照编码规则从0X8140开始,如果“ql==0xff||qh==0xff”就说明区位码“越区”了,因为只有127个区
for(i=0;i<(size*2);i++)*mat++=0x00;//填充满格,“*”是指针运算符,*mat是取指针变量mat的值,
//即每循环一次0x00自增1后将结果赋值给*mat,“*mat”是u8类型;“size*2”是“描绘”一个汉字所需的字节数,
return; //结束访问
}
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;
foffset=((u32)190*qh+ql)*(size*2);//得到字库中的字节偏移量
if(size==16)SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);//字体是16
else SPI_Flash_Read(mat,foffset+ftinfo.f12addr,24); //字体是12
}
问题:
1,qh,ql应该是分别代表区码和位码;
2,ql=*(++code)代表什么意思?求讲解
3,关键是code什么?我知道是指针,
4,mat用以存放size字体的某个汉字的点阵字节?
5,大过年的,祝各位老师幸福安康!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看主函数,就是就是fontx[]这里的第一个,第二个值
一周热门 更多>