2017-03-21 2 views
1

Ich arbeite mit ESP8266 und ich möchte nicht Lua für das ganze Projekt verwenden, ich möchte nur ein paar Schnipsel von Lua-Code, erhalten von Wifi/SD-Karte. Ich müsste eine Lua-Umgebung starten und die Skripts ausführen, die dann einige native Funktionen für Aufgaben auf niedriger Ebene aufrufen würden. Mit anderen Worten, ich möchte Lua einfach als einfache Skriptsprache verwenden (wie es sein soll), um ein dynamisches Verhalten zu implementieren. Ist es möglich? Gibt es irgendeinen Build von Lualib für Arduino?ESP8266 - Ist es möglich, Lua nur von C auszuführen (nicht die gesamte NodeMCU-Umgebung)?

Vielen Dank im Voraus!

Antwort

1

OK, ich weiß, beide Antworten sagten mir, ich kann den Code einfach in mein Projekt einbetten, aber ich fand heraus, dass ich einige kleine Änderungen vornehmen muss. Ich habe ein Beispielprojekt arbeiten verfügbar here und die folgende Liste der Änderungen mussten vorgenommen werden:

  • Die Flaggen LUA_32BITS und LUA_USE_LONGJMP (C Ausnahmebehandlung) wurden
  • Folgende Bibliotheken freigegeben wurden ausgeschlossen: io, os, package, coroutine
  • Die folgenden Funktionen wurden aus C API entfernt: luaL_fileresult, luaL_execresult, luaL_loadfile, luaL_loadfilex, luaL_dofile, luaB_loadfile, luaB_dofile
  • Lua Ausgabe von Meldungen an die serielle Schnittstelle weitergeleitet werden, dann überprüfen tinylua.h, tinylua.cpp und lauxlib.h dieses Verhalten

Hoffnung zu ändern, das hilft!

0

Sie können Lua einfach in einen extlibs/Ordner einbetten und zum Beispiel mit dem Programm verknüpfen. Es gibt vorhandene Lua-Binärdateien, aber der Aufbau selbst ist einfach und besser (da es sich um eine Multiplattform handelt).

0

Das ESP8266 hat bis zu 4 MB Programmspeicher. Theoretisch können Sie bis 16MB erhalten, wie das Datenblatt spezifiziert.

Wie ich mich erinnere, nimmt das Zusammenstellen einer verschmolzenen Version von Lua (alle Quellen in einer Datei) weniger als 100kb ein.

So können Sie die Lua-Bibliothek kompilieren und verwenden Sie es bei ESP8266, sogar mit Arduino IDE.

Aber Sie erhalten NAKED Lua, wenn Sie dies tun ... Keine geschickten Bibliotheken zu Wifi, serielle, SD, Ports steuern ... Sie müssten das in C bereitstellen, oder verwenden Sie NodeMCU-Code, wie Sie brauchen.

Sie können LuaJIT ausprobieren und direkt von Lua auf den C-Code zugreifen, ohne dass Bibliotheken geschrieben werden müssen. Ich habe keine Ahnung, wie Sie es zu Esp8266 kompilieren würden, oder ob jemand das schon einmal versucht hat, aber Sie können es "für die Wissenschaft" tun und uns erzählen, wie es sich herausstellte.

Verwandte Themen