关于emwin下的汉字显示

Posted yll1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于emwin下的汉字显示相关的知识,希望对你有一定的参考价值。

emwin本身是不支持直接显示汉字的,需要添加字库来协助显示,还需要选择编码(UTF-8)方式。

就字库的添加有两种:1、直接在项目代码中添加.c的字库(适合较小的字库);2、吧二进制字库文件烧写进flash里面在读取出来(位置字库法,适合较大的字库);

       1、在项目中直接添加字库

          (1)、使用FontCvt生成字库C文件;

          (2)、使用U2C获得显示字的unicode编码;

          (3)、添加进入项目,显示打印;

        代码:

     GUI_SetFont(&GUI_Font16);     //选择字库
     GUI_UC_SetEncodeUTF8();      //设置编码
     GUI_DispStringAt("\\xe7\\x91\\x9e\\xe5\\xba\\xb7\\xe5\\xae\\x8f\\xe4\\xb8\\x9a", 3, 3);   //在制定位置打印

        2、从外部SPI flash读取(无文件系统)

           (1)、使用FontCvt生成二进制字库文件,并且烧写进外部存储(这里生成的是XBF格式,使用SPI 串口烧写进SPI flash中。这个看具体需要,方法不同);

           (2)、使用U2C获得显示字的unicode编码;

           (3)、项目中添加代码GUI_XBF_CreateFont函数,打印实现;

           代码:

    回调函数:
     static int _cbGetData(U32 Off, U16 NumBytes, void *pVoid, void *pBuffer)
    
        spinorflashReadData(pBuffer, Off, NumBytes);  //直接从spiflash中读取数据
        //如果需要多个字库,把上面的Off改为Off+字库地址偏移就可以了。不能直接写字库地址偏移
        return 0;
     

 

    编码打印:
    GUI_XBF_CreateFont(&XBF_Font16, &XBF_Data,GUI_XBF_TYPE_PROP, _cbGetData, (void *)0);
    GUI_UC_SetEncodeUTF8();
    GUI_DispStringAt("\\xe7\\x91\\x9e\\xe5\\xba\\xb7\\xe5\\xae\\x8f\\xe4\\xb8\\x9a", 3, 3);

  

       3、从外部flash读取(有文件系统)

      步骤与无文件系统一样,附代码:

static int __cbGetData(U32 Off, U16 NumBytes, void *pVoid, void *pBuffer)

    FIL *FontFile;
    
    FontFile = (FIL *)pVoid;
    
    fr = f_lseek(FontFile, Off);
    if(FR_OK != fr)
    
        return 1;
    
    
    fr = f_read(FontFile, pBuffer, NumBytes, &bw);
    if(FR_OK != fr)
    
        return 1;
    
    
    return 0;


static void __ShowXBF(void)

    fr = f_open(&Fontfile, "Font16.xbf", FA_OPEN_EXISTING | FA_READ);
    if(FR_OK != fr)
    
        GUI_DispDecAt(fr, 2, 3, 3);
        return ;
    
    
    GUI_XBF_CreateFont(&XBF_Font16, &XBF_Data, GUI_XBF_TYPE_PROP_AA4_EXT, __cbGetData, &Fontfile);
    
   自己搞这个,不知转了多少个弯啊!!!



以上是关于关于emwin下的汉字显示的主要内容,如果未能解决你的问题,请参考以下文章

emWin6.x支持的字体简介

第3版emWin教程第32章 emWin6.x的矢量字体(支持汉字全字库,Unicode编码,QSPI Flash方案)

STemwin汉字显示

第3版emWin教程第4章 emWin上手之STM32H7 LTDC基础知识

第3版emWin教程第4章 emWin上手之STM32H7 LTDC基础知识

STemWin显示汉字 — SD卡外挂XBF字库