Go Down

Topic: Problema comunicazione client (arduino) - server php (Read 454 times) previous topic - next topic

semresca

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:
Code: [Select]
#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:
Code: [Select]
<?php

$pend
=rand(1100);

echo 
'<'.$pend.'>';

Go Up