成功回调函数在失败时被调用。可能是一个bug吗?
2019-1-21 22:36:58
收藏:0
阅读:62
评论:1
我正在做一个小项目,使用ESP8266与NodeMCU和Lua。我怀疑我发现了一个bug,但由于我对Lua(和其他两个)都很陌生,我希望得到一些帮助,确认是否正确,或者我是否遗漏了些什么(更可能是!)。
NodeMCU固件包含一个内置的SNTP客户端模块,用于更新同步时间到系统时钟(rtctime模块)。成功的回调函数似乎会在(或可能在)NTP同步失败时被调用。例如,如果wifi未连接,或者在启动后第一次同步尝试(连通wifi)时发生。根据文档,rtctime.get()返回零如果当前时间不可用;这是我得到的结果,进一步显示NTP同步不成功。我无法弄清楚为什么在此时调用成功函数,在失败函数之前或之代替(我原本会期望)。
我正在参考的sntp模块在这里——不幸的是,C源代码有点超出了我的能力范围:https://nodemcu.readthedocs.io/en/master/en/modules/sntp/
我的(最小)代码:
-为ntp同步成功定义回调函数
function ntpSyncSuccess (sec, usec, server, info)
print('SNTP时间同步成功!')
print('rtctime.get()返回:',rtctime.get())
end
-配置并启动带有自动重复功能的NTP时间同步
sntp.sync(“0.au.pool.ntp.org”,
ntpSyncSuccess(sec,usec,server,info),-成功回调
function() - 错误回调
print('SNTP时间同步失败!')
end,
1-启用自动重复(SNTP同步每1000秒(〜17分钟))
)
当我启动设备并运行代码时的串行输出结果(注意倒数第二和第三行):
NodeMCU custom build by frightanic.com
branch: master
commit: 11592951b90707cdcb6d751876170bf4da82850d
SSL: false
modules: cron,file,gpio,i2c,net,node,rotary,rtctime,sntp,struct,tmr,uart,wifi
build created on 2019-01-16 03:11
powered by Lua 5.1.4 on SDK 2.2.1(6ab97e9)
lua: cannot open init.lua
> print(uart.setup(0, 115200, 8, 0, 1, 1 ))
115200
> dofile('ntpTest.lua')
SNTP时间同步成功!
rtctime.get()返回:0 0 0
> SNTP时间同步失败!
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

为了让我们可以在这里“结束”这个问题(一旦你接受了答案)。它必须是一个函数引用而非函数调用。
sntp.sync("0.au.pool.ntp.org", ntpSyncSuccess, -- 没有(),没有参数 function() -- 错误回调