目录
Lua5.3参考手册
软件版本
日志及soc下载工具
os.date函数说明
os.date格式化符号
示例
显示效果
希望实现
实现思路
关于汉字显示的说明
编辑编译方法可参考
示例代码
运行log记录
PS: eink - 墨水屏操作库
PS2:
1、eink-1.54寸快刷墨水屏局部刷新模式下频闪;
2、eink墨水屏:日期、星期实时刷新显示;
3、eink墨水屏:墨水屏天气日历。
Lua5.3参考手册
Lua 5.3 参考手册 - 目录
软件版本
CORE-ESP32C3:LuatOS@ESP32C3 base 22.12 bsp V1003 32bit
日志及soc下载工具
luatools 版本:2.1.88
os.date函数说明
os.date ([format [, time]])
返回一个包含日期及时刻的字符串或表。 格式化方法取决于所给字符串 format。
如果提供了 time 参数, 格式化这个时间 (这个值的含义参见 os.time 函数)。 否则,date 格式化当前时间。
如果 format 以 '!' 打头, 日期以协调世界时格式化。 在这个可选字符项之后, 如果 format 为字符串 "*t", date 返回有后续域的表: year (四位数字),month (1–12),day (1–31), hour (0–23),min (0–59),sec (0–61), wday (星期几,星期天为 1 ), yday (当年的第几天), 以及 isdst (夏令时标记,一个布尔量)。 对于最后一个域,如果该信息不提供的话就不存在。
如果 format 并非 "*t", date 以字符串形式返回, 格式化方法遵循 ISO C 函数 strftime 的规则。
如果不传参数调用, date 返回一个合理的日期时间串, 格式取决于宿主程序以及当前的区域设置 (即,os.date() 等价于 os.date("%c"))。
在非 POSIX 系统上, 由于这个函数依赖 C 函数 gmtime 和 localtime, 它可能并非线程安全的。
os.date格式化符号
格式符 |
含义 |
具体示例 |
%a |
一星期中天数的简写 |
(Fri) |
%A |
一星期中天数的全称 |
(Wednesday) |
%b |
月份的简写 |
(Sep) |
%B |
月份的全称 |
(May) |
%c |
日期和时间 |
(09/16/98 23:48:10) |
%d |
一个月中的第几天 |
(28)[0 - 31] |
%H |
24小时制中的小时数 |
(18)[00 - 23] |
%I |
12小时制中的小时数 |
(10)[01 - 12] |
%j |
一年中的第几天 |
(209)[01 - 366] |
%M |
分钟数 |
(48)[00 - 59] |
%m |
月份数 |
(09)[01 - 12] |
%P |
上午或下午 |
(pm)[am - pm] |
%S |
一分钟之内秒数 |
(10)[00 - 59] |
%w |
一星期中的第几天 |
(3)[0 - 6 = 星期天 - 星期六] |
%W |
一年中的第几个星期 |
(2)0 - 52 |
%x |
日期 |
(09/16/98) |
%X |
时间 |
(23:48:10) |
%y |
两位数的年份 |
(16)[00 - 99] |
%Y |
完整的年份 |
(2016) |
%% |
字符串'%' |
(%) |
eink.print(25,70,os.date("%x"))
eink.print(30,110,os.date("%X"))
eink.print(30,150,os.date("%A"))
显示效果:
希望实现:
实现思路:
1、显示中文;
2、建立weekarry星期映射关系,索引下标0为星期日;
weekarray={"日","一","二","三","四","五","六"} --索引从1开始
os.date("%w")显示当前日期的星期数字(字符型),需转换为数字型,才能进行+1操作,与weekarry对应,拼合生成星期几的字符串,并显示
如:
--1、设置所要使用的汉字字库
eink.setFont(eink.font_opposansm10_chinese)
eink.print(5,70,os.date("%Y-%m-%d"))
eink.print(30,110,os.date("%X"))
--2、建立weekarry星期映射关系,索引下标0为星期日,
local weekarray={"日","一","二","三","四","五","六"} --索引从1开始
--os.date("%w")显示当前日期的星期数字(字符型),需转换为数字型,才能进行+1操作,与weekarry对应
--拼合生成星期几的字符串,并显示
eink.print(50,150,"星期"..weekarray[tonumber(os.date("%w")+1)])
关于汉字显示的说明:
必需在.\luatos-soc-idf5\luatos\include\luat_conf_bsp.h文件中打开font_opposansm10_chinese选项,该字库才能启用,之后再编译固件。
编译方法可参考:
合宙ESP32系列|自定义固件|在线云编译|本地编译|Windows|luat_conf_bsp.h|(2)、CORE-ESP32S3编译_打酱油的工程师的博客-CSDN博客
官方默认固件中有:font_opposansm10_chinese字体。
其他字体若未启用及编译,则无法显示汉字,会打印日志显示错误内容:
E/eink only font pointer is allow
示例代码:
while true do
eink.clear(1,0)
eink.setFont(eink.font_opposansm10_chinese)
eink.print(5,70,os.date("%Y-%m-%d"))
eink.print(30,110,os.date("%X"))
local weekarray={"日","一","二","三","四","五","六"} --索引从1开始
eink.print(50,150,"星期"..weekarray[tonumber(os.date("%w")+1)])
eink.show(30,110,1)
sys.wait(500)--每秒刷新2次
end
运行log记录:
[2023-02-04 14:23:26.942] I/main LuatOS@ESP32C3 base 22.12 bsp V1003 32bit
[2023-02-04 14:23:26.942] I/main ROM Build: Feb 4 2023 01:11:06
[2023-02-04 14:23:26.942] I/fs script zone as luadb
[2023-02-04 14:23:26.944] D/main loadlibs luavm 98296 14640 14736
[2023-02-04 14:23:26.944] D/main loadlibs sys 159544 59384 59384
[2023-02-04 14:23:27.390] D/eink spi setup complete, now setup epd
[2023-02-04 14:23:27.501] I/user.e-paper 1.54 Testing Go
[2023-02-04 14:23:31.723] I/user.e-paper 1.54 Testing End
PS: eink - 墨水屏操作库
https://wiki.luatos.com/api/eink.html
PS2:
基于LuatOS@ESP32C3 base 22.12 bsp V1003 32bit版本。
1、eink-1.54寸快刷墨水屏局部刷新模式下频闪;
解决方案:设置清屏参数为: eink.clear(1,0) --解决局部刷新频闪问题
2、eink墨水屏:日期、星期实时刷新显示;
CORE-ESP32C3|eink|日期格式化|IO11解锁|墨水屏操作库|SNTP自动同步|局部刷新|全局刷新|LuatOS-SOC接口|官方demo|学习(12):简单日期显示_打酱油的工程师的博客-CSDN博客
3、eink墨水屏:墨水屏天气日历。
CORE-ESP32C3|eink|墨水屏日历|天气API|LuatOS公共接口|气象要素数据V1|collectgarbage|LuatOS-SOC接口|官方demo|学习(13):墨水屏动态日历_esp32 日历_打酱油的工程师的博客-CSDN博客