Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Studio 4: externe Datei in den Flash einbinden
Hallo,
ich spiele gerade mit einem ESP8266 Modul und möchte zur Konfiguration dessen auch einen kleinen Webserver implementieren. Die HTML-Antworten könnte ich im Quellcode codieren. Mir schwebt aber eine andere Lösung vor:
Gibt es eine Möglichkeit beliebige Dateien (in diesem Beispiel eine *.html Datei) vom Linker mit in das Hex-File einbinden zu lassen?
Viele Grüße
Andreas
ja sicher geht das, du kannst im Code und im Linkerscript eine externe Variable an einem bestimten Speicherplatz deklarieren und dann eine externe Datei mit binärdaten einfach einbinden, aber du musst die menschenlesbare html-Datei halt vorher umwandeln damit der Linker die Datei auch versteht. Dafür gibt es aber Werkzeuge im Netz. Ich habe so etwas vor Jahren mal im Praxissemester eingesetzt, da ging es um das Icon für die Taskleiste eines Service den ich programmiert hatte.
Da wurde das bmp mit in den compiler (nicht linker) von Borland Turbo Pascal eingebunden, indem als Pre-Compile Script ein Tool aufgerufen wurde, welches die BMP in einen compilefähiges Stringarray übersetzt hat und dann mit eincompiliert hat.
Leider habe ich keinen Zugriff mehr darauf udn mein Gedächtnis hat leider auch keine DEtails mehr darüber gespeichert, aber im Grunde würde ich dir vorschlagen eine kleine .exe zu bauen, welche per CMD mit Parametern gefüttert wird, welche deine html files einlesen und zu so etwas wie
uint8_t [tröflzig] main_html;
Strings umwandeln und dann als .c Datei speichern, welche du in deinem Code entsprechend als extern Variablen referenzierst und die generierten .c Files im Compiler mit einbindest.
Ich bin etwas verunsichert wie oder warum du einen ESP826 mit AVR Studio4 programmierst, aber falls du eine API für den WEbserver verwendest, bieten diese recht häufig die Option an ein "angepasstes" HTML file einzulesen, welches dann teilweise aus HTML und teilweise aus code besteht oder Platzhalter beinhaltete die du beim Aufruf als Parameter mit passenden Werten befüllen kannst. (Vergleichbar mit PHP)
Falls du nicht auf C festgelegt bist, kann ich dir µPython und die Flask Library ans Herz legen, die .py Scripts und HTML Files kannst du über die UART in den ESP schieben (ggf. über die Verwendung einer SD Card nachdenken) und die HTMLs können genau so wie in PHP mit passenden Schlüsselzeichen unterbrochen und mit weiterem Python Code befüllt werden, sodass man noch nciht einmal die main.py ändern muss wenn man etwas an den HTMLs ändern möchte.
Der Interpreter öffnet dann die HTML und gibt alles bis zu der Escapesequenz aus, führt dann den Python Code aus, welcher als print Funktion den zu ergänzenden HTML Code ausgibt. Danach sendet er den Rest der HTML Datei.
Das Reddit Forum basiert zum Beispiel auf dieser Technologie, da läuft ein Python Webserver welcher (quasi) HTML (Lückentext-)Files mit weiterem Python Scripts aufruft und die Python Scripts füllen dann die fehltstellen entsprechend auf.
Ein gutes Beispiel wie man so was macht findest Du hier:
https://www.ulrichradig.de/home/index.php/software/avr-webserver-software
Ich hab den Code für einen AVR IO Web ( Pollin ) mit ATMEGA 644 verwendet.
Man kann hier auch Messwerte in eine html Datei einbauen!
Gibt es eine Möglichkeit beliebige Dateien (in diesem Beispiel eine *.html Datei) vom Linker mit in das Hex-File einbinden zu lassen?
Etwas einfacher vielleicht über das SPIF - File System. Dateien über die Arduino-IDE hochladen und dann im Programm verwenden. AVR-Studio 4 - weiß ich nicht, ob da eine Möglichkeit zum Aufspielen von Dateien besteht.
MfG
stimmt, stünde die TOP-Frage unter "Arduino", hätte ich das auch schon geschrieben.
Zur Sicherheit hier ein Link: https://github.com/esp8266/arduino-esp8266fs-plugin
Hallo,
Ich bin etwas verunsichert wie oder warum du einen ESP826 mit AVR Studio4 programmierst,
Da fehlt wohl eine wichtige Info in meinem Posting: Ich programmiere natürlich ein ATmega CPU, die über den USART mit dem ESP8266 spricht. Vielen Dank für deine Denkanstöße. Da werde ich mal weiter forschen. Die HTML-Datei sollte nur als Beispiel dienen. Am Ende möchte ich einen Ordner haben, in dem ich einfach eine Webseite ablegen kann inklusiver Bilder und allem was dazu gehört. Ein Script soll diese dann in den Flash des AVR mit einbinden.
@wkrug: Mir sind einige Webserver-Module bekannt, auch das von Ulrich Radig. Ich möchte aber etwas lernen und das ganze selbst versuchen. Aktuell klappt es schon soweit, dass ich eine Seite aufrufen kann und diese auch ausgeliefert und im Browser angezeigt wird. Der nächste Schritt ist jetzt die Einbindung der html-Dateien.
@Moppi und @HaWe: Arduino verwende ich nicht. Aber danke!
Viele Grüße
Andreas
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.