Salve,
ho scritto una bozza di codice che mi permtte di accendere un led da una pagina web in ajax.
La pagina javasript contiene questa funzione che si appoggia alla libreria prototype per inviare la richiesta http
function ActiveLED(valore){
stringa = valore;
myxhr = new Ajax.Request("http://192.168.1.177",{
parameters : stringa,
encoding:'utf-8',
method:'GET',
onSuccess: function(transport){
var risultato_generale = transport.responseText;
document.getElementById('operazione_in_corso').innerHTML = risultato_generale;
},
onFailure : function(transport){
alert(transport.status);
document.getElementById('operazione_in_corso').innerHTML = "Errore";
},
onTimeout : function(transport){
document.getElementById('operazione_in_corso').innerHTML = "Timeout";
},
timeoutDelay : 100000
});
return false;
}
invece il codice che ho scritto per arduino è questo
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1, 177 };
int ledPinStart = 7;
String readString;
int StatusLed;
Server server(80);
void setup()
{
readString = String("");
Ethernet.begin(mac, ip);
server.begin();
pinMode(ledPinStart, OUTPUT);
}
void loop()
{
Client client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString += c;
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
if (readString.indexOf("MYLED=2") > 0){
if (digitalRead(ledPinStart) == 1){
digitalWrite(ledPinStart, LOW);
}else{
client.print(" LED GIA' SPENTO ");
client.println("
");
}
}else
if (readString.indexOf("MYLED=1") > 0){
if (digitalRead(ledPinStart) == 0){
digitalWrite(ledPinStart, HIGH);
}else{
client.print(" IL LED GIA' ACCESO ");
client.println("
");
}
}
//server.write(client.read());
StatusLed= digitalRead(ledPinStart);
client.println(StatusLed);
break;
}
}
}
delay(1);
client.stop();
readString = "";
}
}
il tutto funziona, infatti se invio la richiesta in ajax, arduino ottiene la stringa in get che gli passo ed esegue quello che voglio io.
Fatto ciò vorrei che l'output che creo su arduino, venga ritornato alla pagina web. Il problema è che per ajax la richiesta http non è andata a buon fine. Se controllo lo status della richiesta http non è a 200 ma a 0, quindi per ajax la richiesta non è andata a buon fine e non si prende alcun output.
come potre risolvere secondo voi??
un'altra domanda veloce ma a che serve server.write();??
grazie mille