Hallo, sorry das ich erst jetzt wieder antworte.
Leider klappt der Code nicht. Der retval bleibt -1. Laut Serial.write(c); wird die HTML Seite korrekt übertragen. nur an der Auswertung scheitert es.
Ich hier der zuständige Code:
void webserver(){
if (client.connect()) {
Serial.println("connected");
client.print("GET ");
client.print(webpraefix);
client.print("?i=");
client.print(expanderRead(expander1),DEC);
client.print(" HTTP/1.0\r\n\r\n");
Serial.print("input:");
Serial.println(expanderRead(expander1),DEC);
}
else {
Serial.println("connection failed");
}
while (client.connected() && retval == -1) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c>='0' && c<='9' && !invalid) { // zwischen 0 und 9, also eine Zahl, und sonst nix in der Zeile
if (bufferpos>MAXLEN) {
Serial.println("ZU LANGE!!!"); // Zu klein dimensionierter Puffer!
invalid = true;
} else
buffer[bufferpos++] = c; // Zahl merken, dann zur naechsten Speicherzelle weitergehen
} else if (c == '\r' || c == '\n') { // CR oder LF
buffer[bufferpos] = '\0'; // "Ganz hinten" Stringende markieren
if (bufferpos > 0) // In der letzten Zeile waren Zahlen, also NICHT zuruecksetzen!
retval = atoi(buffer);
invalid = false;
} else {
bufferpos = 0; // Keine Zahl, also Speicher an den Anfang zuruecksetzen!
invalid = true; // Irgendwas anderes, ein Buchstabe oder ein Sonderzeichen oder so...
}
}
}
if (retval != -1){
// Zahl gefunde, also jetzt was damit machen...
expanderWrite(retval, expander2); // Testweise in die Expandr schreiben...
// 0 = Alles ein // 255 = alles aus
}
Serial.println(retval);
Serial.println("disconnecting.");
client.stop();
Serial.println(retval,BIN);
Serial.println(retval,DEC);
Serial.println("___");
bufferpos = 0; // Klar zum naechsten Durchgang...
invalid = false;
retval = -1;
}
#def.h
...
byte server_ip[] = {
192,168,1,160}; //Server IP
#define server_port 80
char webpraefix[] = "/alarm/ardu/"; //pfad zum script
long server_rw_previous = 0;
//---HTTP-Verbinfung---//
// Max. Anzahl an Zahlen! 6->1, 68->2, 680->3 etc...
#define MAXLEN 3
char buffer[MAXLEN+1];
byte bufferpos = 0;
boolean invalid = false; // Falsche Zeichen in der Zeile?
long retval = -1; // Nix...
Für einen hilfreichen Tipp wäre ich sehr dankbar.