LUA坏参数#2
2019-12-8 14:23:40
收藏:0
阅读:93
评论:1
我是一个完全的LUA/ESP8266的初学者,我正在尝试找出这个错误的来源:
PANIC:在调用Lua API时未受保护的错误('set'的第2个坏参数(索引超出范围))
这是串行监视器中的整个消息:
NodeMCU 2.2.0.0使用frightanic.com提供的Docker构建
.branch:master
.commit:11592951b90707cdcb6d751876170bf4da82850d
.SSL:false
构建类型:连续数
.LFS:禁用
模块:adc,bit,dht,file,gpio,i2c,mqtt,net,node,ow,spi,tmr,uart,wifi
构建于2019-12-07 23:52
以SDK 2.2.1(6ab97e9)的Lua 5.1.4为基础
> Config done,IP是192.168.2.168
LED-Server已启动
PANIC:在调用Lua API时未受保护的错误('set'的第2个坏参数(索引超出范围))
ets 2013年1月8日,rst原因:2,引导模式:(3,6)
加载0x40100000,长度27780,房间16
尾巴4
校验和0xbc
加载0x3ffe8000,长度2188,房间4
尾巴8
校验和0xba
加载0x3ffe888c,长度136,房间0
尾巴8
校验和0xf2
csum 0xf2
å¬ú‰.Éo‰ísÉÚo|Ï.å.õd$`..#íú..æÑ2rí.lúN‡.Éo„..l`.Ñ‚r€lÑ$.å...
我将此代码([https://github.com/Christoph-D/esp8266-wakelight]中的代码上传到ESP8266,并构建了具有所有必需模块的正确NodeMCU固件。
串行输出几秒钟后,我收到这个错误并开始重复重启。
我应该从哪里开始寻找问题?
非常感谢!
EDIT:在lua文件中,只有很少几个地方写有关“set”的内容:
local function update_buffer(buffer, c)
if not c.r_frac then c.r_frac = 0 end
if not c.g_frac then c.g_frac = 0 end
if not c.b_frac then c.b_frac = 0 end
local r2 = c.r_frac >= 0 and c.r + 1 or c.r - 1
local g2 = c.g_frac >= 0 and c.g + 1 or c.g - 1
local b2 = c.b_frac >= 0 and c.b + 1 or c.b - 1
local r3, g3, b3
local set = buffer.set
for i = 1, NUM_LEDS do
if i > c.r_frac then r3 = c.r else r3 = r2 end
if i > c.g_frac then g3 = c.g else g3 = g2 end
if i > c.b_frac then b3 = c.b else b3 = b2 end
set(buffer,i-1,g3,r3,b3)
end
end
有什么问题吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

在调用
set的 for-loop 上方,尝试添加以下内容:print(buffer:size(), NUM_LEDS)如果一切正常,它应该打印相同的数字两次。如果 NUM_LEDS 更大,则说明出现了错误。
我真的不明白为什么它在那个地方使用全局变量;出于这个原因,使用
buffer:size()更有意义。