里飞网

 找回密码
 立即注册
查看: 5924|回复: 9
打印 上一主题 下一主题

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

[复制链接]

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
跳转到指定楼层
楼主
发表于 2024-1-18 11:31:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现象描述:
  使用LvglFontTool V0.4工具生成指定的字符集的bin文件,然后烧录到外部flash进行读取,发现有些许字符没有显示出来,而且是固定的字符,但我用工具生成那个C文件数组进行测试,是正常显示。感觉像是那个字符显示数据生成有问题似的,由于我的指定字符集含有中日俄法西班牙等,不清楚是否有影响?


指定字符集是:

蓄电池启动充数据语言关于类型测试中普通液态标准选择容量设置状前后良好失败重更换健康寿命内阻值额定引擎转速开始如果成功按键继续退出正常压偏高低纹波有无负载请增加至并保持秒然输入查看记录备品牌商编号软硬件版本性能过是否法打印纸张已尽没时间发机慢检侦文移除浮头照灯例。?!,
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΩÜüä“öíóéú¿¡ÉÀÈ«»àバッテリ一クランキグ電デタ語についてのイプレギュフド吸収ガスマトゲルセ強化規格を選択するコアツ工業日ヨロパ国際委員会米自動車技術船舶用理事設ヘ部ジ圧測力シ番態後再しくださ交換がぎま続けかワエ敗た検れ分間あり回転ら「」押場合は終了な時行せん度上げ、残少め刷でき紙確認記録ブモソウェョハРУ́СКИЙÇÃÚÍÁАМЛЯТОБПВЫНЕЗДЩГ°ЬЖХШЧЦÓестпульацийбвгдЁёжзІікмнорЎўФфхчшыЭэЮюяÊÑñÂËÎÏÔÖÙیƀâèêîïôùûçœæ表面荷取とえばオぁぃぅうぇぉおぐこござじずぜそぞちぢっづどぬねぱひびぴふぶぷへべぺほぼぽみむもゃやゅゆょよろゎわゐゑァィゥォカケゴサザズゼゾダチヂヅナニヌネノヒビピベペホボポミムメャヤユヮヰヱヲヴヵヶ





微信图片编辑_20240118112808.jpg (1.15 MB, 下载次数: 562)

微信图片编辑_20240118112808.jpg

微信图片编辑_20240118112738.jpg (669.28 KB, 下载次数: 542)

微信图片编辑_20240118112738.jpg
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
沙发
发表于 2024-1-18 11:41:15 | 只看该作者
C数组的正常,那这里很可能是你的读取不正确了。
回复

使用道具 举报

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
板凳
 楼主| 发表于 2024-1-18 12:44:03 | 只看该作者
阿里兄 发表于 2024-1-18 11:41
C数组的正常,那这里很可能是你的读取不正确了。

一般是什么原因呢,第一张图三个地方是固定的字符(y)呢
回复

使用道具 举报

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
地板
 楼主| 发表于 2024-1-18 14:20:39 | 只看该作者
阿里兄 发表于 2024-1-18 11:41
C数组的正常,那这里很可能是你的读取不正确了。

调试追踪发现,函数碰到这个字符压根就没读直接越过去读下一个字符去了,这是编码的问题吗
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
5#
发表于 2024-1-18 14:22:25 | 只看该作者
KAMYZHAO 发表于 2024-1-18 14:20
调试追踪发现,函数碰到这个字符压根就没读直接越过去读下一个字符去了,这是编码的问题吗 ...

这里可能是你的BIN存到FLASH出错,或是读到的数据出错。
回复

使用道具 举报

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
6#
 楼主| 发表于 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数组的数据一致)。
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
7#
发表于 2024-1-18 15:59:15 | 只看该作者
KAMYZHAO 发表于 2024-1-18 14:32
我重新看了下,是有做读取操作,但是只操作了__user_font_get_glyph_dsc函数,没有执行__user_font_get_bi ...

BIN转成C数组试试吧,或是换内部大数组,文字少点,内部大数组和BIN格式没有区别了。
回复

使用道具 举报

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
8#
 楼主| 发表于 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  ,所以就没显示出来.这就无语了!!!
回复

使用道具 举报

1

主题

6

帖子

39

积分

新手上路

Rank: 1

积分
39
9#
 楼主| 发表于 2024-1-19 10:36:26 | 只看该作者
找到原因了,过来结贴

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

2.png (142.57 KB, 下载次数: 2636)

2.png

4.png (97.73 KB, 下载次数: 2689)

4.png

9.png (156.86 KB, 下载次数: 2640)

9.png
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
10#
发表于 2024-1-19 10:42:52 | 只看该作者
KAMYZHAO 发表于 2024-1-19 10:36
找到原因了,过来结贴

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

解决了就好,感谢告知
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 15:45 , Processed in 0.081755 second(s), 7 queries , File On.

Powered by Discuz! X3.3

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

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