首页 文章

ESP8266 - 是否可以从C运行Lua(不是完整的NodeMCU环境)?

提问于
浏览
1

我正在使用ESP8266并且我不想在整个项目中使用Lua,我只想运行一些Lua代码片段,从wifi / SD卡收到 . 我需要启动Lua环境并运行脚本,然后最终会调用一些本机函数来执行低级任务 . 换句话说,我只想使用Lua作为简单的脚本语言(因为它的目的)来实现一些动态行为 . 可能吗?是否有arduino的lualib版本?

提前致谢!

3 回答

  • 1

    例如,您可以简单地将Lua嵌入extlibs /文件夹中,并在编译程序时链接到它 . 现有Lua二进制文件但是自己构建它很容易也就更好(因为它是多平台) .

  • 1

    好的,我知道两个答案告诉我,我可以将代码嵌入到我的项目中,但是,我发现我需要进行一些小的更改 . 我做了一个示例工作项目here,并且必须进行以下更改列表:

    • 启用了标志 LUA_32BITSLUA_USE_LONGJMP (C异常处理)

    • 排除了以下库: ioospackagecoroutine

    • 以下函数已从C API中删除: luaL_fileresultluaL_execresultluaL_loadfileluaL_loadfilexluaL_dofileluaB_loadfileluaB_dofile

    • Lua输出消息被重定向到Serial接口,检查 tinylua.htinylua.cpplauxlib.h 以更改此行为

    希望这可以帮助!

  • 0

    ESP8266具有高达4MB的程序存储空间 . 从理论上讲,数据表指定的最高可达16MB .

    我记得,编译一个合并版本的Lua(一个文件中的所有源代码),占用不到100kb .

    因此,您可以编译Lua库并在esp8266上根据需要使用它,甚至使用Arduino IDE .

    但是你会得到NAKED Lua如果你这样做......没有漂亮的库可以控制Wifi,串口,SD,端口......你必须在C中提供它,或者根据需要使用NodeMCU代码 .

    您可以尝试LuaJIT并直接从Lua访问C代码,从而减少编写库的需要 . 我不知道你怎么把它编译成Esp8266,或者如果有人之前尝试过这个,但你可以做到"for science"并告诉我们结果如何 .

相关问题