Probleme Scope / Variablen

Hallo,

Ich habe ein Problem und komme allein leider nicht weiter.Vielleicht ist hier jemand der so nett ist und mir weiter helfen kann.

IPAddress myserver(192, 168, 0, 48); // IP Adres (or name) of server to dump data to mysql

void loop()

Ich weise myserver so die IP Adresse zu. Das ganze funktioniert soweit ganz gut.
Allerdings möchte ich das die IP Adresse aus dem EEPROM ausgelesen wird und diese dann verwendet wird. Das bekomme ich aber leider nicht hin.

Mein Versuch:

IPAddress myserver(eeprom_config.mysql_server_ip[0], eeprom_config.mysql_server_ip[1], eeprom_config.mysql_server_ip[2], eeprom_config.mysql_server_ip[3]); // IP Adres (or name) of server to dump data to mysql

Innerhalb von loop funktioniert eeprom_config.mysql_server_ip[0] und ich kann mir den richtigen Wert mit Serial.print() ausgeben lassen.

Ich kann compilieren und updaten aber die IP wird so nicht übernommen.

Hat jemand vielleicht eine Idee woran das liegen kann ?

bitte ganzen Sketch.

Innerhalb von loop funktioniert eeprom_config.mysql_server_ip[0]

Das musst du zeigen, wie das einen Wert aus dem EEPROM anzeigt...

(glaub ich nicht)

trunkx:
Ich weise myserver so die IP Adresse zu. Das ganze funktioniert soweit ganz gut.
Allerdings möchte ich das die IP Adresse aus dem EEPROM ausgelesen wird und diese dann verwendet wird. Das bekomme ich aber leider nicht hin.

Dann vergißt Du am besten die Idee, die Objektklasse "IPAddress" zu verwenden, und legst Deine IP-Adresse als Array mit der Größe 4 Bytes an.

Also statt:

IPAddress ip(192, 168, 0, 48);

ein Byte-Array:

byte ip[4]={192, 168, 0, 48};

Bzw. wenn die Adresse zum Zeitpunkt des Kompilierens noch nicht feststeht, sondern erst zur Laufzeit des Programms aus dem EEPROM gelesen werden soll, liest Du die 4 Bytes in einer for-Schleife aus dem EEPROM und weist sie an das Array zu.

@jurs:

Schau dir die Klasse mal genauer an. Die verwendet intern auch nur ein Array. Und der Subskript Operator ist überladen, wodurch man ein IPAddress Objekt wie ein Array verwenden kann.

Erstmal danke für eure Hilfe. Wirklich weiter gekommen bin ich noch nicht.
Ich habe als Grundlage Webduino - NetSetup verwendet und um einen Port für meinen RelayServer und eine IP für den Mysql-Server erweitert. Die Werte werden korrekt in den EEPROM geschrieben. Aber ausserhalb von void setup und void loop kann ich mit den variablen nichts anfangen.

Meinen Sourcecode hab ich mal als txt file angehängt weil dieser 9000 Zeichen überschreitet.

source.txt (27.1 KB)

Hat keiner eine Idee warum ich die IP nicht via Variablen definieren kann, aber manuell schon ?
Wäre wirklich dankbar wenn mir da jemand ein bisschen weiter helfen könnte. Ich bin recht neu auf dem Gebiet und kenn mich daher noch nicht so gut aus, aber ich bin am lernen =)

Danke im vorhinein.

Hab das Problem selbst lösen können. Anscheinend hat die SD card am Ethernetshild den Fehler verursacht.

pinMode(4, OUTPUT);
digitalWrite(4, HIGH);

hat mein Problem gelöst.