Mit dem Vs2019 kann ich dateien einbinden und als variable im code
benutzen.
Geht das für Arduino oder ESP8266 auch?
Ich habe nur das gefunden:
1
const char* s = R"EOL(...)EOL";
Wobei ich möchte, dass die ... durch eine externe Datei ersetzt werden
die dann beim compilieren in diese variable eingebunden wird ohne das
ich bei jeder änderung die "Datei" in Text umwandeln muss.
Ich benutze VS2019 mit VMicro (lizensiert).
A. D. schrieb:> Mit dem Vs2019 kann ich dateien einbinden und als variable im code> benutzen.
Wie tust du das?
Warum sollte das mit der Arduino IDE nicht gehen?
Welche Meldungen kommen da?
Irgendwie konnte man das mit objcopy machen. Man wandelt die Datei ins
*.o Format um und linkt sie dann zum Binary hinzu. Irgendwann in den
90ern hatte ich das mal gemacht.
Eine einfachere Alternative ist, die Datei mittels
1
xxd -i Dateiname > dateiname.c
in ganz normalen C-Quelltext umzuwandeln. Das kann man prima ins
Makefile einbinden. Nur nicht unter dem Spiele-Starter Windows, aber das
ist ja auch für eine andere Zielgruppe vorgesehen. Siehe dazu
https://www.cygwin.com/
in C# kann ich die Dateien als Resource einbinden, im EXE kann ich diese
dann verwenden aber nicht ändern. Ideal für ICONEN, Bilder oder Keys.
Leider sind in Arduino keine Ressource Library vorhanden.
Klar kann ich die mit xxd oder anders umwandeln und dann einbinden.
Das Problem ist aber man muss das jedesmal machen wenn die einzubindende
Datei ändert. Mir wäre lieber ich könnte das ohne vorherige Umwandlung.
die Funktion mit R"EOL(...)EOL" funzt leider auch nicht.
Vermutlich nur mit anderen IDE's...
Ansonsten schreib ich halt schnell ein Programm welches die Dateien in
ein Header umwandelt, dann kann ich die Includen... aber ist halt wieder
mehr aufwand.
A. D. schrieb:> Ansonsten schreib ich halt schnell ein Programm welches die Dateien in> ein Header umwandelt, dann kann ich die Includen... aber ist halt wieder> mehr aufwand.
"Dateien" wie in "mehrere"?
Warum nimmst du nicht "FS.h", also SPIFFS oder LittleFS, und packst die
Dateien as-is auf den ESP?
Grade für so Web-Server Anwendungen ist das oft viel praktischer.
A. D. schrieb:> die Funktion mit R"EOL(...)EOL" funzt leider auch nicht.> Vermutlich nur mit anderen IDE's...
Das tuts schon mit der Literal Form.
Aber es lassen sich kein unmodifizierten Textdateien einblenden.
Man kann sich behelfen.....
Die Textdatei endet bei mir auf *.h, damit sie mit der Arduino IDE
erzeugt und bearbeitet werden kann
test.h
1
R"EOL(
2
Lorem ipsum dolor sit amet consectetuer et semper id augue a.
3
Turpis Aenean dolor elit neque Sed Maecenas vel volutpat
4
condimentum consequat. Egestas nisl malesuada Duis eu orci
5
malesuada pulvinar justo pretium et. Tempus elit lacus
6
interdum nec non tempus sit amet Fusce elit. Leo tellus
7
eleifend tellus mauris laoreet tellus et cursus massa eget.
8
Et mauris lacus nec mauris semper et vel.
9
)EOL"
irgendwas.ino
1
#include<Streaming.h> // die Lib findest du selber ;-)
@Arduino Fanboy D. (ufuf)
Hi Danke für die schnelle Antwort.
"R"EOL..." funktioniert soweit mit direktem Text,
jedoch auf den Trick mit dem include wäre ich nicht gekommen
(ist aber ja logisch, hab wohl zu weit gesucht und war verblendet vom
Resource C#).
Das ist für mich genau die richtige Lösung.
Danke, das spart mir eine menge Arbeit.
@Εrnst B. (ernst)
Danke, aber hab keine SDCARD und möchte lieber alles im Code.
A. D. schrieb:> Das Problem ist aber man muss das jedesmal machen wenn die einzubindende> Datei ändert.
Deswegen benutzt man Build Scripte die das automatisieren. Das gute alte
Make würde die Umwandlung sogar nur dann ausführen, wenn notwendig, also
wenn die Quelldatei geändert wurde.
Arduino Fanboy D. schrieb:> Schön, dass es dir gefällt!>> Auch wenn sich bei dem ein oder anderem Arduino oder C++ Hasser die> Nackenhärchen dabei aufstellen werden.
Ja ging mir zuerst auch so, jedoch mit der Zeit ist man mit wenig schon
zufrieden, werde es aber im Auge gehalten...
A. D. schrieb:> Danke, aber hab keine SDCARD und möchte lieber alles im Code.
Beim ESP geht das im internen Flash, ganz ohne SD-Card.
https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html
d.H. du hast da sowieso 1-3 MB an Flash, die sonst ungenutzt bleiben
würden. (ok, bei den ganz alten ESP-01 sind's nur 64k)
und dem Webserver erklärst du dann mit z.B.
Εrnst B. schrieb:> Beim ESP geht das im internen Flash, ganz ohne SD-Card.
Ja danke, mit dem ESP steh ich erst am Anfang, habe mal ein WiFiLogger
geschrieben für dem MegaR3WiFi.
Dann kahm die Idee warum nicht gleich ein Web Server zu machen wo man
das Ergebnis sofort ablesen kann ohne über ein Protokoll und Zusatz
Programm zugehen.
Werde das sicher noch anschauen wäre ja vermutlich dann auch die
richtigere Variante, Besten Dank.
ist auch veraltet, serverStatic ist VOID und setDefaultFile ist im
nirwana
genau wie SPIFFS
Leider veraltet und darduch unzählige Warnungen.
Stellt man auf LittleFS um funzt alles, jedoch können keine Daten
hochgeladen werden weil das Tool einen Fehler in der IDE Anzeigt.
Zudem ist das Git Library unvollständig und enthält kein .jar das muss
man sich nach stunden durchlesen selber noch besorgen...
Unfertig und unausgereift und fehlerhaft.
Etwas schwach und unausgereift das ganze...
(Meine Meinung, 1 Tag verloren)
A. D. schrieb:> genau wie SPIFFS
die serve-Static Methode nimmt ein fs::FS-Objekt. Davon sind sowohl
SPIFFS als auch LittleFS abgeerbt, d.H. es geht beides.
A. D. schrieb:> und enthält kein .jar
Häh? Was willst du mit einem JAR? Das ist C++, kein Java.
Du hast schon die richtige Bibliothek?
https://github.com/me-no-dev/ESPAsyncWebServer/
(platformio.ini:
Εrnst B. schrieb:> Häh? Was willst du mit einem JAR? Das ist C++, kein Java.
Für SPIFFS gibts ein Arduino IDE Plugin/Tool (eine *.jar Datei) um das
FS zu füllen/Initialisieren. Denn die IDE ist sehr wohl ein Java
Programm.
Arduino Fanboy D. schrieb:> Denn die IDE ist sehr wohl ein Java> Programm.
Ok, diese Krankheit benutz' ich nicht. Und der muss man ein JAR
mitgeben, damit sie das Dateisystem erzeugen kann? Das ist dann
tatsächlich unpraktisch.
Damit stellt sich dann eine neue Frage: wieso kommt der TE auf die Idee,
dass eine Webserver-Bibliothek ein Tool zum Dateisystem-Erstellen
mitliefern sollte? Das wär dann doch deutlich out-of-scope.
Εrnst B. schrieb:> Und der muss man ein JAR> mitgeben, damit sie das Dateisystem erzeugen kann?
Das ist eine Folge dessen, dass die ESP Boards Fremdboards sind. Da muss
halt der Ersteller der Boarddefinition alle notwendigen Tools
mitliefern.
Εrnst B. schrieb:> Das ist dann> tatsächlich unpraktisch.
Mag sein...
Es ist dennoch keine Schwäche der IDE, eher eine der Boarddefinition.
Arduino Fanboy D. schrieb:> Da muss> halt der Ersteller der Boarddefinition alle notwendigen Tools> mitliefern.
Ok, d.H. es ist kein Problem der Webserver-Bibliothek, sondern ein
Problem des ESP32-Arudino-IDE-Plugins.
Nachdem der TE scheinbar ein VisualStudio-User (wohl VS2019, nicht
VScode) ist: Vielleicht sollte er bei dieser IDE bleiben. Da kriegt er
platformio eingebunden, und das regelt die ganzen Tool- und
Bibliotheksabhängigkeiten, wie auch das Dateisystem-Erstellen und
Dateisystem-Upload...
https://docs.platformio.org/en/latest/integration/ide/visualstudio.html