Ciao ragazzi,
ho un problema durante la comunizaione tra server e client.
Il client esegue la prima richiesta al server di un dato, il server risponde facendo un randon tra 1 e 100 e lo stampa con un echo, il client riceve la risposta poi tramite substring rimuovo tutto l'output del server ("HTTP 200 OK....") e tengo solamente il dato che mi interessa.
E qui viene il problema, il client esegue la prima richiesta ed elabora come sopra scritto, ma dopo continua a stampare sempre lo stesso dato come se non eseguisse più la GET verso il server.
Allego il codice di arduino e del server per capire meglio il problema.
Client arduino:
#include <SPI.h>
#include <Ethernet.h>
// ethernet mac address - must be unique on your network
byte mymac[] = { 0x90,0xA2,0xDA,0x00,0x3B,0xD4 };
// ethernet shield interface ip address
byte myip[] = { 192,168,1,10 };
// server ip address
byte srv[] = { 192,168,1,5 };
// inizialize connection to server
EthernetClient client;
// String with the server response
String serverResponse="";
void setup() {
Ethernet.begin(mymac, myip);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
connection();
}
void connection() {
Serial.print("connecting");
delay(350);
Serial.print(".");
delay(350);
Serial.print(".");
delay(350);
Serial.println(".");
if(client.connect(srv, 80)) {
Serial.println("connected!");
}
else {
Serial.println("connection failed");
Serial.println("retring");
Serial.println("");
connection();
}
}
void request() {
client.println("GET /WebServer/invio.php HTTP/1.0");
client.println("HOST: localhost");
client.println("");
}
void getResponse() {
char c;
while((c=client.read())!=-1){
serverResponse=serverResponse+c;
}
int i=serverResponse.lastIndexOf('<')+1;
int j=serverResponse.lastIndexOf('>');
serverResponse=serverResponse.substring(i, j);
Serial.println(serverResponse);
}
void loop() {
request();
getResponse();
delay(100);
}
Server php:
<?php
$pend=rand(1, 100);
echo '<'.$pend.'>';