0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用BinaryFont进行字体动态更新

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-08-03 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、引言

自从 2013 年第一款侧重于 GUI 应用的 STM32F429x【内嵌 Chrom-ART 图形加速和 LTDC 控制器】开始,ST 就为大 家提供了 STM32MCU + X-Cube-TouchGFX 一站式 GUI 开发平台。越来越多的客户使用 STM32 + TouchGFX 开发智能手表/智能家居控制面板等嵌入式设备。

在嵌入式GUI开发的应用中,设备厂家希望自己的设备支持用户根据自己喜好来定义所选用的字体类型。从技术上讲,可以将字体和应用程序分离开,这样可以在嵌入式设备有限的存储空间上根据需要更新和升级字体的类型。

2、TouchGFX Binary font 介绍

TouchGFX为客户提供了二进制字体(Binary Font)的方法,这些字体没有链接到应用程序中,而是作为文件与应用程序分开存储,这些文件在运行时由应用程序加载并提供给TouchGFX。

2b43dc4e-12c4-11ed-ba43-dac502259ad0.png

当应用程序加载了二进制字体后,可以在TouchGFX字体系统中安装二进制字体。这里内置的 Font2 被应用程序加载的Binaryfont 替换。此后,TouchGFX 不再使用链接的Font2,使用自定义的Binary font进行显示。

下面例程展示了如何使用BinaryFont进行字体动态更新。

3、演示例程实现过程

3.1.打开 TouchGFX Designer 4.18.0

- TouchGFX4.18.0 (本文使用 4.18.0 举例,其他版本操作过程相同)

环境安装请参考网址: https://support.touchgfx.com/docs/introduction/installation

- VSCode

3.2.打开 TouchGFX Designer 4.18.0

选择 STM32F746DK 探索板,生成工程 :

2b953288-12c4-11ed-ba43-dac502259ad0.png

3.3 选择 “文本配置”,选择 “二进制字体文件”

2bb467b6-12c4-11ed-ba43-dac502259ad0.png

3.4 设计 Screen1 (添加 Images/TextArea/Buttons)

2bd4ae22-12c4-11ed-ba43-dac502259ad0.png

3.5 设置 Typographies :

- Typographies 设置 :

2bfacb02-12c4-11ed-ba43-dac502259ad0.png

- Single Use 设置:

2c165430-12c4-11ed-ba43-dac502259ad0.png

3.6 TouchGFX Designer 生成项目

可以在以下目录下找到verdana和verdana italic的二进制字体文件 :

2c33be8a-12c4-11ed-ba43-dac502259ad0.png

3.7 在代码中安装二进制字体

在 TouchGFX 使用文本前,二进制字体必须从文件或其他存储中复制到可直接寻址的存储空间。当应用程序将二进制字体加载到内存时,它可以在 TouchGFX 中安装字体,之后 TouchGFX 将使用该字体而不是编译后的字体。

- 在FrontApplication.cpp安装默认的二进制字体:

2c450e06-12c4-11ed-ba43-dac502259ad0.png

2c690cb6-12c4-11ed-ba43-dac502259ad0.png

3.7 添加 Button 交互,用于选择使用不同的二进制字体

- 添加交互,当按键按下,切换成相应的二进制字体 :

2c8df33c-12c4-11ed-ba43-dac502259ad0.png

- 添加代码 Screen1View.hpp

2cb9e5c8-12c4-11ed-ba43-dac502259ad0.png

2cca3720-12c4-11ed-ba43-dac502259ad0.png

- 添加代码 Screen1View.cpp

2ce81cd6-12c4-11ed-ba43-dac502259ad0.png

2d097e80-12c4-11ed-ba43-dac502259ad0.png

3.8 编译运行结果如下 :

2d2a0e5c-12c4-11ed-ba43-dac502259ad0.png

2d3d005c-12c4-11ed-ba43-dac502259ad0.png

验证

从以上的演示可以看到,通过TouchGFX Designer的简单配置和调用其提供的API,就可以轻松实现字体的动态更新。

厂家和用户可以根据场景需求灵活使用本功能。比如 ,厂家可以通过针对的不同用户群体来提供OTA服务,让用户动态更新自己的字体类型。这样由于各二进制字体可以占用同一块内存区域,厂家的硬件成本也会得到降低。

具体示例实现过程,请参考示例代码 : 《hello-tgfx4180-binary-font-v1.0-202112.7z》

THE END

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17907

    浏览量

    195707
  • 二进制
    +关注

    关注

    2

    文章

    809

    浏览量

    43270

原文标题:工程师笔记|STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    02. 如何在 Allegro 中快速自定义字体?| 芯巧Allegro PCB 设计小诀窍

    Allegro PCB设计小诀窍系列--如何在Allegro中快速自定义字体背景介绍:在进行PCB设计时,设计人员通常会在PCB上添加各种丝印信息,用来标注元器件的位号、PCB版本信息、绘制时间以及
    发表于 04-03 16:34

    GUI Guider 如何控制字体生成的范围?

    比如大号的字体我只需要使用其中的某些字符,但是GUI Guider 默认生成全部的ASCII和FontAwesome图标,比较浪费Flash空间.
    发表于 03-16 07:48

    智能显示模块支持哪些国家的字体显示?

    智能显示模块支持哪些国家的字体显示?
    发表于 02-26 10:51

    智能显示模块带字库吗?可以支持哪些字体显示?

    智能显示模块带字库吗?可以支持哪些字体显示?
    发表于 02-26 10:47

    打开工程后工程中的字体没有显示,如字符串,数字等控件不能预览显示字体

    打开工程后工程中的字体没有显示,如字符串,数字等控件不能预览显示字体
    发表于 02-25 17:39

    长城汽车定制车机字体全球免费商用

    近日,长城汽车正式宣布,其自研的定制车机字体 “长城黑体”即日起更名为“长城共享体”,并面向全球设计者、开发者及企业开放免费商用版权,用户可通过长城汽车官方网站获取。
    的头像 发表于 02-01 15:15 1398次阅读

    资产账实不符?智能系统扫码建档,动态更新

    资产账实不符根源在于 “数据滞后于实物变动”。智能系统通过扫码建档赋予资产唯一身份,以动态更新实现数据与实物同步,结合全生命周期管控,让设备 “来龙去脉” 可溯。从发电企业汽轮机到城市供水管网的实践证明,当资产数据从 “静态记录” 变为 “
    的头像 发表于 09-23 10:14 635次阅读
    资产账实不符?智能系统扫码建档,<b class='flag-5'>动态</b><b class='flag-5'>更新</b>

    labview中三维图中的字体要怎么修改?

    图中圈起来的字体要怎么改
    发表于 09-07 20:04

    请问如何使用GB2312字体编码?

    如何使用GB2312字体编码?
    发表于 09-04 07:42

    使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时如何更改UART端口?

    使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时如何更改UART端口?
    发表于 08-25 06:38

    如何在 Linux 阶段进行 OTA 更新

    如何在 Linux 阶段进行 OTA 更新
    发表于 08-20 08:27

    无刷直流电机状态方程系数矩阵的动态更新

    的仿真建模。把系数矩阵放在静态变量存储区,可直接修改状态方程组的系数矩阵,达到快速修改此系数矩阵的目的。另外,在每个仿真步长的输出阶段修改系数矩阵,达到了动态更新的目的。仿真结果表明,文中所提方法可快速
    发表于 07-09 14:17

    Allegro Skill字符功能之设置字符位置及字体

    在PCB设计过程中,当大量器件被导入到PCB板上时,可能会出现器件丝印字体相互重叠,使得器件位号难以辨认的情况。
    的头像 发表于 06-28 09:46 2836次阅读
    Allegro Skill字符功能之设置字符位置及<b class='flag-5'>字体</b>

    利用普源示波器进行功率器件动态特性测试的研究

    深度等优点,在功率器件动态特性测试中具有广泛的应用前景。本文旨在研究利用普源示波器进行功率器件动态特性测试的方法,为相关领域的研究和应用提供参考。 功率器件动态特性的重要性   功率器
    的头像 发表于 06-12 17:03 827次阅读
    利用普源示波器<b class='flag-5'>进行</b>功率器件<b class='flag-5'>动态</b>特性测试的研究

    芯资讯|广州唯创电子语音芯片远程更新方案全解析

    场景​推荐芯片​技术优势​单段MP3更新​医疗设备提示音变更多语言动态切换​​WT2003H4WT2605C​秒级替换单条语音,无需停机​整包bin更新​固件功能升级语音库大
    的头像 发表于 05-29 09:11 747次阅读
    芯资讯|广州唯创电子语音芯片远程<b class='flag-5'>更新</b>方案全解析