Wie deklariere ich so etwas im Header const char index_html[]
-
Hallo ihr Lieben. Ich brauche mal wieder eure Hilfe
Entschuldigung für die blöde Überschrift, da ist mir nichts besseres eingefallenWenn man einen Arduino in C programmiert, muss man sich nicht an einen C Standard halten da kann man im Header, es so deklarieren
const char index_html[] PROGMEM = R"=====( <!DOCTYPE html> <html> <head> <title>ESP32-radio</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" type="text/css" href="radio.css"> <link rel="Shortcut Icon" type="image/ico" href="favicon.ico"> </head> <body> <ul> ..........................
Meine Frage ist wie deklariere ich das richtig (const char index_html[] )in einem Header und cpp File
Das habe ich zu PROGMEM gefunden
https://www.arduino.cc/reference/en/language/variables/utilities/progmem/
-
Das ist erstmal eine Definition (mit impliziter Deklaration)
index_html ist eine Variable. Und die werden nicht im Header definiert, nur dekalriertDie Deklaration wäre dann
extern const char index_html[] PROGMEM; //oder extern const char PROGMEM index_html[];
PROGMEM
ist eine Compilererweiterung, die den Speicherort der Variable festlegt.
In diesem Fall der Flash-Speicher, damit das RAM nicht unötig verbraucht wird.
-
Danke schön, so weit war ich auch schon nur dummerweise meckert
der Compiler dann mit..\Internet_Radio.ino:4492:31: error: invalid application of 'sizeof' to incomplete type 'const char []'
l = sizeof ( index_html ) ;else { p = index_html ; l = sizeof ( index_html ) ; } if ( *p == '\n' ) // If page starts with newline: {
-
Warum musst du eine von dir geschriebene Konstante auf \n am Anfang überprüfen?
l=strlen(index_html); /* oder */ while (*p)
-
Danke für eure Antworten
Keine Ahnung das ist ein komplexes Projekt für die Arduino IDE und
ich möchte es für die Eclipse Umgebung verfügbar machen, weil ich den LCD Treiber umschreiben muss und das ist Eclipse die bessere Wahl als die spatanische
Arduino IDE.
-
ats3788 schrieb:
Keine Ahnung
Das sind schlechte Voraussetzungen.
-
Danke für die Antworten
Ich habe es folgendermaßen gelöst ich habe mir einfach
eine functionconst uint8_t favicon_ico[] PROGMEM = { 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x..................................... int GetLength(void) { int Result = sizeof(favicon_ico); return(Result); }
Zu Manni66 Für mich ist C ein Vehikel um ans Ziel zu kommen.Bei 5000 Zeilen Programmcode gibt es Zusammenhänge die man nicht sofort verstehen kann, vor allem wenn sie von eienm anderen geschrieben werden.