由于缺少 file.open(),将 Lua 代码上传到 ESP32 上的 nodemcu 时出现问题

问题描述 投票:0回答:1

我正在尝试在 ESP32 上运行 nodemcu(比 esp8266 更多的内存)。我使用 dev-esp32 分支 https://github.com/nodemcu/nodemcu-firmware.git 的源代码构建了固件。构建是在 Windows/WSL2/Ubuntu 系统上完成的。

固件可以工作,但是我在上传和保存 lua 文件时遇到问题。我尝试过各种工具,例如http://chilipeppr.com/esp32

“堆”和“重置”等功能运行良好。但是,上传文件失败。控制台输出为:

file.open("unnamed1.lua", "w")
 file.writeline([[print("Test")]])
 file.writeline([[]])
 file.close()
 node.compile("unnamed1.lua")
> file.open("unnamed1.lua", "w")
Lua error:  stdin:1: attempt to call field 'open' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: ?
    [C]: ?
> file.writeline([[print("Test")]])
Lua error:  stdin:1: attempt to call field 'writeline' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: ?
    [C]: ?
> file.writeline([[]])
Lua error:  stdin:1: attempt to call field 'writeline' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: ?
    [C]: ?
> file.close()
Lua error:  stdin:1: attempt to call field 'close' (a nil value)
stack traceback:
    stdin:1: in main chunk
    [C]: ?
    [C]: ?
> node.compile("unnamed1.lua")
Lua error:  stdin:1: cannot open unnamed1.lua: No such file or directory
stack traceback:
    [C]: in function 'compile'
    stdin:1: in main chunk
    [C]: ?
    [C]: ?

显然,ESP8266 NodeMCU 实现了 file.open(),而 ESP32 NodeMCU 没有(ESP32 似乎实现了 Lua io lib)。

我有构建问题吗?我不这么认为,因为 https://nodemcu.readthedocs.io/en/dev-esp32/modules/file/ 没有列出 file.open()

上传工具无法检测到我的 ESP32 是否存在问题?重置后,我的固件报告为: ''' NodeMCU ESP32 构建未指定,由 IDF v4.4.3 上的 Lua 5.1.4 [5.1-doublefp] 提供支持 '''

如有任何帮助,我们将不胜感激。

lua nodemcu
1个回答
0
投票

尝试使用

io
lib 代替。

do
    local file = io.open("unnamed1.lua", "w")
    file:write[[
    print("Test")
    ]]
    file:close()
end
node.compile("unnamed1.lua")
© www.soinside.com 2019 - 2024. All rights reserved.