目录
Lua5.3参考手册
软件版本
日志及soc下载工具
os.date函数说明
os.date格式化符号
示例
显示效果
希望实现
实现思路
关于汉字显示的说明
编辑编译方法可参考
示例代码
运行log记录
PS: eink - 墨水屏操作库
PS2:
1、eink-1.54寸快刷墨水屏局部刷新模式下频闪;
2、eink墨水屏:日期、星期实时刷新显示;
3、eink墨水屏:墨水屏天气日历。
Lua5.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编译_打酱油的工程师的博客-
官方默认固件中有: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墨水屏:日期、星期实时刷新显示;