里飞网

 找回密码
 立即注册

[求助]使用LvglFontTool V0.4工具生成XBF的外部bin文件读取异常

查看数: 2523 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-1-18 11:31

正文摘要:

现象描述:   使用LvglFontTool V0.4工具生成指定的字符集的bin文件,然后烧录到外部flash进行读取,发现有些许字符没有显示出来,而且是固定的字符,但我用工具生成那个C文件数组进行测试,是正常显示。感 ...

回复

阿里兄 发表于 2024-1-19 10:42:52
KAMYZHAO 发表于 2024-1-19 10:36
找到原因了,过来结贴

是数据类型转换引起的。在函数内加强转类型就OK了 ...

解决了就好,感谢告知
KAMYZHAO 发表于 2024-1-18 17:00:53
阿里兄 发表于 2024-1-18 15:59
BIN转成C数组试试吧,或是换内部大数组,文字少点,内部大数组和BIN格式没有区别了。 ...

我试了用内部大数组,可以正常显示。
然后我之前追踪了一下代码发现在这里出现异常:
---------------------lv_draw_letter函数---------------------------------
  int32_t pos_x = pos_p->x + g.ofs_x;
    int32_t pos_y = pos_p->y + (font_p->line_height - font_p->base_line) - g.box_h - g.ofs_y;

    /*If the letter is completely out of mask don't draw it */
    if(pos_x + g.box_w < clip_area->x1 ||
       pos_x > clip_area->x2 ||
       pos_y + g.box_h < clip_area->y1 ||
       pos_y > clip_area->y2)  {
                                 #include "stdio.h"
                                printf("OOOOOOOOOOOOOO!\r\n");//这里跳出了!!!!!!!
        return;
    }

    const uint8_t * map_p = lv_font_get_glyph_bitmap(font_p, letter);
    if(map_p == NULL) {
        LV_LOG_WARN("lv_draw_letter: character's bitmap not found");
        return;
    }
-----------------------------------
是上面函数内跳出导致没有往下执行lv_font_get_glyph_bitmap  ,所以就没显示出来.这就无语了!!!
阿里兄 发表于 2024-1-18 15:59:15
KAMYZHAO 发表于 2024-1-18 14:32
我重新看了下,是有做读取操作,但是只操作了__user_font_get_glyph_dsc函数,没有执行__user_font_get_bi ...

BIN转成C数组试试吧,或是换内部大数组,文字少点,内部大数组和BIN格式没有区别了。
KAMYZHAO 发表于 2024-1-18 14:32:11
本帖最后由 KAMYZHAO 于 2024-1-18 15:54 编辑
阿里兄 发表于 2024-1-18 14:22
这里可能是你的BIN存到FLASH出错,或是读到的数据出错。

我重新看了下,是有做读取操作,但是只操作了__user_font_get_glyph_dsc函数,没有执行__user_font_get_bitmap函数,请问这是什么原因呢,我读了下该字符的bin数据,是没问题(跟生成C数组的数据一致)。
阿里兄 发表于 2024-1-18 14:22:25
KAMYZHAO 发表于 2024-1-18 14:20
调试追踪发现,函数碰到这个字符压根就没读直接越过去读下一个字符去了,这是编码的问题吗 ...

这里可能是你的BIN存到FLASH出错,或是读到的数据出错。
KAMYZHAO 发表于 2024-1-18 14:20:39
阿里兄 发表于 2024-1-18 11:41
C数组的正常,那这里很可能是你的读取不正确了。

调试追踪发现,函数碰到这个字符压根就没读直接越过去读下一个字符去了,这是编码的问题吗
KAMYZHAO 发表于 2024-1-18 12:44:03
阿里兄 发表于 2024-1-18 11:41
C数组的正常,那这里很可能是你的读取不正确了。

一般是什么原因呢,第一张图三个地方是固定的字符(y)呢
阿里兄 发表于 2024-1-18 11:41:15
C数组的正常,那这里很可能是你的读取不正确了。

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-9-28 10:20 , Processed in 0.087380 second(s), 8 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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