基础资料
基于Air105开发板:Air105 - LuatOS 文档
探讨重点
官方fonts库函数介绍以及利用mcu.ticks()计算程序运行周期相关内容的学习及探讨。
软件版本
AIR105:LuatOS@AIR105 base 22.12 bsp V0014 32bit
硬件准备
- air105开发板
软件使用
接口文档可参考:
https://wiki.luatos.com/api/fonts.html
主函数体:
sys.taskInit(function()
sys.wait(2000)
local i = 0
while 1 do
--程序运行时长计算
local start = mcu.ticks()
local data =json.encode(fonts.list("u8g2"))
local gtime = mcu.ticks() - start
-- API新增于2022-07-12
if fonts.list then
log.info("fonts", "u8g2", data)
end
oppo_8 = fonts.get("opposansm8_chinese", "u8g2")
--oppo_8 = fonts.get("opposansm8_chinese", "u8g2")
if oppo_8 then
u8g2.SetFont(oppo_8)
else
log.warn("fonts", "no such font opposansm8_chinese")
end
-- 若使用云编译的自定义字库, 使用方式如下
oppo_8 = fonts.get("oppo_bold_8", "u8g2") -- oppo_bold_8 是云编译界面的字库命名
--oppo_8 = fonts.get("oppo_bold_8", "u8g2")
if oppo_8 then
u8g2.SetFont(oppo_8)
else
log.warn("fonts", "no such font opposansm8_chinese")
end
--程序运行时长计算
local ltime = mcu.ticks() - start - gtime
log.info("ticks", start, gtime, ltime)
sys.wait(1000)
i = i + 1
break
end
end)
LOG:
[2023-02-13 22:37:27.532] no bl encrypt
[2023-02-13 22:37:27.532] main 672:bootloader build release Feb 1 2023 20:19:29!
[2023-02-13 22:37:27.532] Jump_AppRun 76:jump to 0x01010400 !
[2023-02-13 22:37:27.532] main 188:APP Build release Feb 9 2023 22:01:02!
[2023-02-13 22:37:27.532] I/main LuatOS@AIR105 base 22.12 bsp V0014 32bit
[2023-02-13 22:37:27.532] I/main ROM Build: Feb 10 2023 20:58:08
[2023-02-13 22:37:27.564] D/main loadlibs luavm 204792 15376 15376
[2023-02-13 22:37:27.564] D/main loadlibs sys 406456 51032 51616
[2023-02-13 22:37:27.564] I/user.main fontdemo 1.0.0
[2023-02-13 22:37:27.564] D/lcd ic support: st7735
[2023-02-13 22:37:27.891] I/user.lcd.init true
[2023-02-13 22:37:27.891] I/user.lcd.drawLine true
[2023-02-13 22:37:27.891] I/user.lcd.drawRectangle true
[2023-02-13 22:37:27.891] I/user.lcd.drawCircle true
[2023-02-13 22:37:29.920] I/user.fonts u8g2 ["unifont_t_symbols","open_iconic_weather_6x_t","opposansm8","opposansm10","opposansm12","opposansm16","opposansm20","opposansm24","opposansm32","opposansm12_chinese"]
[2023-02-13 22:37:29.920] W/user.fonts no such font opposansm8_chinese
[2023-02-13 22:37:29.920] W/user.fonts no such font opposansm8_chinese
[2023-02-13 22:37:29.920] I/user.ticks 2364 0 1
PS:fonts - 字体库
已适配 Air101/Air103 Air105 ESP32C3 Air780
备注
本页文档由这个文件自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!
fonts.list(tp)
返回固件支持的字体列表
参数
传入值类型 | 解释 |
string | 类型, 默认 u8g2, 还可以是lvgl |
返回值
返回值类型 | 解释 |
table | 字体列表 |
例子
-- API新增于2022-07-12
if fonts.list then
log.info("fonts", "u8g2", json.encode(fonts.list("u8g2")))
end
fonts.get(name, tp)
获取字体
参数
传入值类型 | 解释 |
string | 字体名称, 例如opposansm8_chinese unifont_t_symbols |
string | 类型, 默认 u8g2, 还可以是lvgl |
返回值
返回值类型 | 解释 |
userdata | 若字体存放,返回字体指针, 否则返回nil |
例子
oppo_8 = fonts.get("opposansm8_chinese", "u8g2")
if oppo_8 then
u8g2.SetFont(oppo_8)
else
log.warn("fonts", "no such font opposansm8_chinese")
end
-- 若使用云编译的自定义字库, 使用方式如下
oppo_8 = fonts.get("oppo_bold_8", "u8g2") -- oppo_bold_8 是云编译界面的字库命名
if oppo_8 then
u8g2.SetFont(oppo_8)
else
log.warn("fonts", "no such font opposansm8_chinese")
end
fonts.load(path, path)
从文件加载字体
参数
传入值类型 | 解释 |
string | 字体路径, 例如 /luadb/abc.bin |
string | 类型, 默认 u8g2. 也支持lvgl |
返回值
返回值类型 | 解释 |
userdata | 若字体存放,返回字体指针, 否则返回nil |
例子
-- API新增于2022-07-11
-- 提醒: 若文件位于/luadb下, 不需要占用内存
-- 若文件处于其他路径, 例如tf/sd卡, spi flash, 会自动加载到内存, 消耗lua vm的内存空间
-- 加载后请适当引用, 不必反复加载同一个字体文件
oppo12 = fonts.load("/luadb/oppo12.bin")
if oppo12 then
u8g2.SetFont(oppo12)
else
log.warn("fonts", "no such font file oppo12.bin")
end