还是Get_HzMat(u8 *code,u8 *mat,u8 size)函数理解问题

2019-07-21 07:23发布

 关于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,大过年的,祝各位老师幸福安康!








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。