硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2591|回复: 14
收起左侧

[emWin] emWin 控件无法显示汉字

[复制链接]

38

主题

91

回帖

205

积分

高级会员

积分
205
发表于 2018-1-25 10:02:11 | 显示全部楼层 |阅读模式
GUI_DispString()可以显示字符和汉字
BUTTON_SetText只能显示字符,汉字不显示

使用的是UTF-8编码

GUI_Init();
GUI_UC_SetEncodeUTF8();
GUI_SetFont(&GUI_FontSong24);

GUI_XBF_CreateFont(&XBF_Font24,        /* GUI_FONT绫诲瀷鍙橀噺     */
                       &XBF_Data24,          /* GUI_XBF_DATA绫诲瀷鍙橀噺 */
                       GUI_XBF_TYPE_PROP,    /* 瀛椾綋绫诲瀷             */
                       _cbGetData24,         /* 鍥炶皟鍑芥暟             */
                       &Fontfile24);

GUI_DispString("abc测试");  // 正常显示
BUTTON_Handle hButton;
    hButton = BUTTON_Create(110,110,100,40,GUI_ID_OK,WM_CF_SHOW);
    GUI_SetFont(&GUI_FontSong24);
    BUTTON_SetText(hButton,"def测试"); // 只显示def
    WM_Exec();

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-25 10:06:23 | 显示全部楼层
BUTTON控件的函数调用错了,你得调用BUTTON的字体设置函数BUTTON_SetFont() 。
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 11:15:09 | 显示全部楼层
BUTTON_SetFont(hButton,GUI_FONT_24_1);  //修改了,还是显示不出汉字,只显示def
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-25 11:17:04 | 显示全部楼层
xiaolun217001 发表于 2018-1-25 11:15
BUTTON_SetFont(hButton,GUI_FONT_24_1);  //修改了,还是显示不出汉字,只显示def

要用你创建的XBF字体。
BUTTON_SetFont(hButton, &GUI_FontSong24);
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 11:26:03 | 显示全部楼层
使用BUTTON_SetFont(hButton, &GUI_FontSong24); //字符也显示不出来了

GUI_CONST_STORAGE GUI_CHARINFO GUI_24X24_CharInfo[1] =   
{        
    {  24,    24,  3, (void *)0   },            
};   
GUI_CONST_STORAGE  GUI_FONT_PROP GUI_FontSong24_Prop1 =   
{   
    0x0,   
    0xFFFF,   
    &GUI_24X24_CharInfo[0],   
    (void *)0   
};
GUI_CONST_STORAGE GUI_FONT GUI_FontSong24 = {
   GUI_FONTTYPE_PROP /* type of font    */
  ,24 /* height of font  */
  ,24 /* space of font y */
  ,1 /* magnification x */
  ,1 /* magnification y */
  ,{&GUI_FontSong24_Prop1}
  ,14 /* Baseline */
  ,7 /* Height of lowercase characters */
  ,11 /* Height of capital characters */
};
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-25 11:28:23 | 显示全部楼层
真的假的,这么神奇。是用的我们的开发板不,如果是的话,例子压缩上传,我给你改改。
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 11:29:21 | 显示全部楼层
我把字库写到外扩快速flash中,首地址为0x10000000,字库为(24*24)
#define   XBF_Font24BaseAdd   0x10000000
static int _cbGetData24(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{       
        sf_ReadBuffer(pBuffer, XBF_Font24BaseAdd + Off, NumBytes);

        return 0;
}
void sf_ReadBuffer(uint8_t * _pBuf, uint32_t _uiReadAddr, uint32_t _uiSize)
{
    /*if ((_uiSize == 0) ||(_uiReadAddr + _uiSize) > g_tSF.TotalSize)
    {
            return;
    }*/
     for (U16 i = 0;i < _uiSize;i++)  
    {  
        *_pBuf++ = *(uint8_t *)(_uiReadAddr+i);
    }
}
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 11:33:30 | 显示全部楼层
不是开发板,是我们自己做的板子,都是gui接口,GUI_DispString可以,BUTTON_SetText不行,难以理解
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-25 11:56:41 | 显示全部楼层
xiaolun217001 发表于 2018-1-25 11:33
不是开发板,是我们自己做的板子,都是gui接口,GUI_DispString可以,BUTTON_SetText不行,难以理解

如果是这样的话,就简单的测试下C文件格式的汉字显示,在现在的这个工程上测试看看是否能够显示,如果还是不能显示,把你的测试代码贴出来,仅需要贴出emWin测试代码即可,我测试下看看。
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 14:17:47 | 显示全部楼层
单独建个C文件,UTF-8格式,还是不行,只能显示123,显示不了汉字
const char* test = "123测试";
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 14:22:04 | 显示全部楼层
/* Route Main clock to LCD. */
    CLOCK_AttachClk(kMCLK_to_LCD_CLK);
    CLOCK_SetClkDiv(kCLOCK_DivLcdClk, 1, true);


    /* Set the back light PWM. */
    BOARD_InitPWM();
   
    /* emWin start */
    GUI_Init();
    GUI_Clear();
    GUI_UC_SetEncodeUTF8();
    GUI_SetFont(&GUI_FontSong24);
    GUI_XBF_CreateFont(&XBF_Font24,        
                       &XBF_Data24,         
                       GUI_XBF_TYPE_PROP,   
                       _cbGetData24,        
                       &Fontfile24);         
    GUI_DispString(test); // 显示正常
    BUTTON_Handle hButton;
    hButton = BUTTON_Create(200,110,100,40,GUI_ID_OK,WM_CF_SHOW);
    //BUTTON_SetFont(hButton,&GUI_FontSong24);
    BUTTON_SetFont(hButton,GUI_FONT_24_1);
    BUTTON_SetText(hButton,test); // 汉字显示不出来
   
        while(1)
        {
                GUI_Delay(10);
        }
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 14:23:52 | 显示全部楼层
void LCD_X_Config(void)
{
    status_t status;
    //GUI_MULTIBUF_Config(GUI_BUFFERS);
    //GUI_DEVICE_CreateAndLink(GUIDRV_LIN_16, GUICC_565, 0, 0);
    GUI_DEVICE_CreateAndLink(GUIDRV_LIN_OXY_16, GUICC_565, 0, 0);//镜像

    LCD_SetSizeEx(0, LCD_WIDTH, LCD_HEIGHT);
    LCD_SetVSizeEx(0, LCD_WIDTH, LCD_HEIGHT);

    LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR);

    status = APP_LCDC_Init();

    TSC2046_Init();
}
void GUI_X_Config(void)
{
    /* Assign work memory area to emWin */
    GUI_ALLOC_AssignMemory((void *)GUI_MEMORY_ADDR, GUI_NUMBYTES);

    /* Select default font */
    GUI_SetDefaultFont(GUI_FONT_24_1); //GUI_FONT_6X8
}
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 14:28:47 | 显示全部楼层
帮忙测试一下,使用库版本为emWin V5.38,字库是通过工具FontCvt生成的
回复

使用道具 举报

38

主题

91

回帖

205

积分

高级会员

积分
205
 楼主| 发表于 2018-1-25 15:34:18 | 显示全部楼层
修改成这样可以显示汉字了,还是字体格式的问题
static void GUI_SetXBF(void)
{
    GUI_XBF_CreateFont(&XBF_Font24,     
                       &XBF_Data24,         
                       GUI_XBF_TYPE_PROP,   
                       _cbGetData24,         
                       &Fontfile24);      
}
GUI_UC_SetEncodeUTF8();
GUI_SetFont(&XBF_Font24);
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-26 09:28:39 | 显示全部楼层
xiaolun217001 发表于 2018-1-25 15:34
修改成这样可以显示汉字了,还是字体格式的问题
static void GUI_SetXBF(void)
{

好的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-16 06:07 , Processed in 0.285472 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表