2017-03-21 127 views
1

我正在使用ESP8266,並且我不想爲整個項目使用Lua,我只是想運行一些從wifi/sd卡接收的Lua代碼片段。我需要啓動一個Lua環境並運行這些腳本,然後這些腳本最終會調用一些本地函數來執行低級任務。換句話說,我只是想使用Lua作爲簡單的腳本語言(就像它本來打算的那樣)來實現一些動態行爲。可能嗎?是否有arduino的lualib版本?ESP8266 - 是否可以從C運行Lua(而不是完整的NodeMCU環境)?

在此先感謝!

回答

1

好的,我知道兩個答案告訴我,我可以將代碼嵌入到我的項目中,但是,我發現我需要做一些小的更改。我做出了表率工作提供here項目及以下的更改列表必須作出:

  • 的標誌LUA_32BITSLUA_USE_LONGJMP(C異常處理)已啓用
  • 以下庫被排除在外:ioospackagecoroutine
  • 以下功能,從C API移除:luaL_fileresultluaL_execresultluaL_loadfileluaL_loadfilexluaL_dofileluaB_loadfileluaB_dofile
  • Lua的輸出信息重定向到串行接口,檢查tinylua.htinylua.cpplauxlib.h更改此行爲

希望這有助於!

0

您可以簡單地將Lua嵌入到extlibs /文件夾中,並在編譯程序時鏈接到它。 有現有的Lua二進制文件,但自己構建它更容易和更好(因爲它是多平臺的)。

0

ESP8266擁有高達4MB的程序存儲空間。理論上,您可以根據數據表指定的最大16MB。

我記得,編譯一個合併版本的Lua(在一個文件中的所有源文件),佔用不到100kb。

因此,即使使用Arduino IDE,您也可以編譯Lua庫並在esp8266上根據需要使用它。

但是,如果你這樣做,你將得到NAKED Lua ...沒有漂亮的庫來控制Wifi,串口,SD,端口......你必須在C中提供它,或者根據需要使用NodeMCU代碼。

您可以嘗試LuaJIT並直接從Lua訪問C代碼,從而減少了編寫庫的需求。我不知道如何將它編譯到Esp8266,或者如果有人曾經嘗試過這一點,但是您可以「科學地」完成並告訴我們結果如何。

相關問題