Moinsen!
Ich habe da ein "interessantes" Problem, bei dem mir nicht klar ist, warum das so ist und für mich ist es irgendwie unlogisch. Aber ich bin ja noch Greenhorn
Ich habe eine Webabfrage, der Ardu spricht in regelmäßigen Abständen einen Server an und holt den Inhalt einer Textdatei. Diese hat als Inhalt eine 6-stellige Zahlenkombination. An Hand der Kombination soll der Ardu nun reagieren.
Das tut er aber komischerweise nur mit der Funktion string.endsWith, alle anderen Abfragen werden ignoriert, bzw ergeben nur Grütze.
Kann mir einer verraten, warum das so ist?
Hier mal die wichtigen Code Ausschnitte:
// include usw... rausgekürzt
char website[ ] PROGMEM = "meineURL.de";
// called when the client request is complete
static void my_callback (byte status, word off, word len){
String schalter = ((const char*) Ethernet::buffer + off);
Serial.println (schalter); // liefert den kompletten 6-stelligen Textcode
Serial.println (schalter.substring(0,3)); // liefert irgendwelche Grütze, aber keine Teile des o.g. Codes
//Abfragen funktionieren, wenn der Code in der Textdatei entsprechend endet
if (schalter.endsWith("000")) {
digitalWrite(2, LOW);
}
if (schalter.endsWith("999")) {
digitalWrite(2, HIGH);
}
// Abfragen funktionieren nicht
if (schalter.substring(3,7) = "000") {
digitalWrite(3, LOW);
}
if (schalter.substring(3,7) = "999") {
digitalWrite(3, HIGH);
}
// Variante Abfragen funktionieren auch nicht
if (schalter.startsWith("000")) {
digitalWrite(3, LOW);
}
iif (schalter.startsWith("999")) {
digitalWrite(3, HIGH);
}
//um das void setup gekürzt
void loop () {
ether.packetLoop(ether.packetReceive());
if (millis() > timer) {
timer = millis() + 5000;
ether.browseUrl(PSTR("/verzeichnis/"), "datei.txt", website, my_callback);
}
}
Auch nur einzelne Stellen mit Substring abzufragen funktioniert nicht.
OK, ich kann mir jetzt erstmal behelfen, indem ich mit eine mathematische Formel überlege, um alle Möglichkeiten mit möglichst wenig Code in solche "endsWith" zu bekommen, aber spätestens wenn es nicht nur zwei relevante Zustände und Empfänger (Schalter) sind, wird es unübersichtlich...
Jemand eine Idee, wie man das Problem lösen kann und warum das so ist?