我正在使用ESP8266并且我不想在整个项目中使用Lua,我只想运行一些Lua代码片段,从wifi / SD卡收到 . 我需要启动Lua环境并运行脚本,然后最终会调用一些本机函数来执行低级任务 . 换句话说,我只想使用Lua作为简单的脚本语言(因为它的目的)来实现一些动态行为 . 可能吗?是否有arduino的lualib版本?
提前致谢!
例如,您可以简单地将Lua嵌入extlibs /文件夹中,并在编译程序时链接到它 . 现有Lua二进制文件但是自己构建它很容易也就更好(因为它是多平台) .
好的,我知道两个答案告诉我,我可以将代码嵌入到我的项目中,但是,我发现我需要进行一些小的更改 . 我做了一个示例工作项目here,并且必须进行以下更改列表:
启用了标志 LUA_32BITS 和 LUA_USE_LONGJMP (C异常处理)
LUA_32BITS
LUA_USE_LONGJMP
排除了以下库: io , os , package , coroutine
io
os
package
coroutine
以下函数已从C API中删除: luaL_fileresult , luaL_execresult , luaL_loadfile , luaL_loadfilex , luaL_dofile , luaB_loadfile , luaB_dofile
luaL_fileresult
luaL_execresult
luaL_loadfile
luaL_loadfilex
luaL_dofile
luaB_loadfile
luaB_dofile
Lua输出消息被重定向到Serial接口,检查 tinylua.h , tinylua.cpp 和 lauxlib.h 以更改此行为
tinylua.h
tinylua.cpp
lauxlib.h
希望这可以帮助!
ESP8266具有高达4MB的程序存储空间 . 从理论上讲,数据表指定的最高可达16MB .
我记得,编译一个合并版本的Lua(一个文件中的所有源代码),占用不到100kb .
因此,您可以编译Lua库并在esp8266上根据需要使用它,甚至使用Arduino IDE .
但是你会得到NAKED Lua如果你这样做......没有漂亮的库可以控制Wifi,串口,SD,端口......你必须在C中提供它,或者根据需要使用NodeMCU代码 .
您可以尝试LuaJIT并直接从Lua访问C代码,从而减少编写库的需要 . 我不知道你怎么把它编译成Esp8266,或者如果有人之前尝试过这个,但你可以做到"for science"并告诉我们结果如何 .
3 回答
例如,您可以简单地将Lua嵌入extlibs /文件夹中,并在编译程序时链接到它 . 现有Lua二进制文件但是自己构建它很容易也就更好(因为它是多平台) .
好的,我知道两个答案告诉我,我可以将代码嵌入到我的项目中,但是,我发现我需要进行一些小的更改 . 我做了一个示例工作项目here,并且必须进行以下更改列表:
启用了标志
LUA_32BITS
和LUA_USE_LONGJMP
(C异常处理)排除了以下库:
io
,os
,package
,coroutine
以下函数已从C API中删除:
luaL_fileresult
,luaL_execresult
,luaL_loadfile
,luaL_loadfilex
,luaL_dofile
,luaB_loadfile
,luaB_dofile
Lua输出消息被重定向到Serial接口,检查
tinylua.h
,tinylua.cpp
和lauxlib.h
以更改此行为希望这可以帮助!
ESP8266具有高达4MB的程序存储空间 . 从理论上讲,数据表指定的最高可达16MB .
我记得,编译一个合并版本的Lua(一个文件中的所有源代码),占用不到100kb .
因此,您可以编译Lua库并在esp8266上根据需要使用它,甚至使用Arduino IDE .
但是你会得到NAKED Lua如果你这样做......没有漂亮的库可以控制Wifi,串口,SD,端口......你必须在C中提供它,或者根据需要使用NodeMCU代码 .
您可以尝试LuaJIT并直接从Lua访问C代码,从而减少编写库的需要 . 我不知道你怎么把它编译成Esp8266,或者如果有人之前尝试过这个,但你可以做到"for science"并告诉我们结果如何 .