目录

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

lua格式化插件 lua格式化时间_开发语言

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"))

显示效果:

lua格式化插件 lua格式化时间_墨水屏_02

希望实现:

lua格式化插件 lua格式化时间_lua_03

实现思路:

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选项,该字库才能启用,之后再编译固件。

lua格式化插件 lua格式化时间_墨水屏_04

编译方法可参考:

合宙ESP32系列|自定义固件|在线云编译|本地编译|Windows|luat_conf_bsp.h|(2)、CORE-ESP32S3编译_打酱油的工程师的博客-

官方默认固件中有:font_opposansm10_chinese字体。

其他字体若未启用及编译,则无法显示汉字,会打印日志显示错误内容:

E/eink only font pointer is allow

lua格式化插件 lua格式化时间_lua_05

示例代码:

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墨水屏:日期、星期实时刷新显示;

 

3、eink墨水屏:墨水屏天气日历。