我正在使用ESP8266,並且我不想爲整個項目使用Lua,我只是想運行一些從wifi/sd卡接收的Lua代碼片段。我需要啓動一個Lua環境並運行這些腳本,然後這些腳本最終會調用一些本地函數來執行低級任務。換句話說,我只是想使用Lua作爲簡單的腳本語言(就像它本來打算的那樣)來實現一些動態行爲。可能嗎?是否有arduino的lualib版本?ESP8266 - 是否可以從C運行Lua(而不是完整的NodeMCU環境)?
在此先感謝!
我正在使用ESP8266,並且我不想爲整個項目使用Lua,我只是想運行一些從wifi/sd卡接收的Lua代碼片段。我需要啓動一個Lua環境並運行這些腳本,然後這些腳本最終會調用一些本地函數來執行低級任務。換句話說,我只是想使用Lua作爲簡單的腳本語言(就像它本來打算的那樣)來實現一些動態行爲。可能嗎?是否有arduino的lualib版本?ESP8266 - 是否可以從C運行Lua(而不是完整的NodeMCU環境)?
在此先感謝!
好的,我知道兩個答案告訴我,我可以將代碼嵌入到我的項目中,但是,我發現我需要做一些小的更改。我做出了表率工作提供here項目及以下的更改列表必須作出:
LUA_32BITS
和LUA_USE_LONGJMP
(C異常處理)已啓用io
,os
, package
,coroutine
luaL_fileresult
,luaL_execresult
,luaL_loadfile
,luaL_loadfilex
,luaL_dofile
,luaB_loadfile
,luaB_dofile
個tinylua.h
,tinylua.cpp
和lauxlib.h
更改此行爲希望這有助於!
您可以簡單地將Lua嵌入到extlibs /文件夾中,並在編譯程序時鏈接到它。 有現有的Lua二進制文件,但自己構建它更容易和更好(因爲它是多平臺的)。
ESP8266擁有高達4MB的程序存儲空間。理論上,您可以根據數據表指定的最大16MB。
我記得,編譯一個合併版本的Lua(在一個文件中的所有源文件),佔用不到100kb。
因此,即使使用Arduino IDE,您也可以編譯Lua庫並在esp8266上根據需要使用它。
但是,如果你這樣做,你將得到NAKED Lua ...沒有漂亮的庫來控制Wifi,串口,SD,端口......你必須在C中提供它,或者根據需要使用NodeMCU代碼。
您可以嘗試LuaJIT並直接從Lua訪問C代碼,從而減少了編寫庫的需求。我不知道如何將它編譯到Esp8266,或者如果有人曾經嘗試過這一點,但是您可以「科學地」完成並告訴我們結果如何。