Ethernet : client.available() toujours égal à 0


bonsoir à tous,

je découvre l'ethernet shield et j'ai réussi à créer un programme qui me permet de poster (post) des données sur mon serveur. en revanche, impossible de récupérer (get) des données...

j'ai consulté différents tutos et forums pour voir s'il y avait une subtilité qui m'échappait, sans succès, et il s'avère que le fichier exemple "webclient" fonctionne, mais "webclientrepeating" (censé récupérer les données d'un fichier txt sur le serveur arduino) ne fonctionne pas : la connexion se fait bien mais aucune donné n'est renvoyée/affichée.

en débugant, je me suis aperçu que le problème vient de client.available() qui renvoie toujours 0, alors que d'après la doc ça ne devrait pas être le cas...
la connexion via dhcp fonctionne, la connexion au serveur aussi.

voici mon code complet (pour tester vous pouvez décommenter la variable server, le post, le de mon serveur... je laisse le vrai nom de domaine exprès). voyez-vous mon erreur ?? merci !

code: [select]

#include <spi.h>
#include <ethernet.h>
#include <dht.h>

dht dht;
#define dht11_pin 5

byte mac[] = { 0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed }; // mon shield
//char server[] = "www.matthieumarce.com";
char server[] = "www.arduino.cc";
ipaddress ip(192,168,1,6);
ethernetclient client;
string data;
string currentline;
int degres = 0;
int humidite = 0;

void setup() {
  serial.begin(9600);
  if (ethernet.begin(mac) == 0) {
    serial.println("dhcp indisponible, tentative par ip directe...");
    ethernet.begin(mac,ip);
  } else{ serial.println("dhcp ok."); }
}

void loop() {
  dht.read11(dht11_pin);
  degres = (int) dht.temperature;
  humidite = (int) dht.humidity;
  data = "auth=arduino_voltaire&temp=" + string(degres) + "&hum=" + string(humidite);
  //serial.print("post : "); serial.println(data);
  if (client.connect(server,80)==1) {       
    /*client.println("post /monitoring.php http/1.1");
    client.println("host: www.matthieumarce.com");
    client.println("content-type: application/x-www-form-urlencoded");
    client.print("content-length: ");
    client.println(data.length());
    client.println();
    client.print(data);
    client.println();*/

    /*client.println("get /monitoring.txt http/1.1");
    client.println("host: www.matthieumarce.com");   
    client.println();*/
    client.println("get /latest.txt http/1.1");
    client.println("host: www.arduino.cc");
    client.println("user-agent: arduino-ethernet");
    client.println("connection: close");
    client.println();
  }
  if (client.connected()) {     
    serial.print("nombre de bytes disponibles : ");serial.println(client.available()); // debug
    if (client.available()) {
      char c = client.read();     
      currentline += c;
      serial.println(c); // debug
      serial.println("client disponible"); // debug
    }
    serial.print("get : ");
    serial.println(currentline);
    client.stop();
    serial.println("connexion fermee.");
  }
  delay(60000);
}

salut, je ne peux pas tester ton programme mais j'essaie de comprendre

dans la première partie tu fais un post et ensuite tu enchaînes directement (via if client.connected) sur la lecture d'un fichier ?

dans la partie ou tu veux lire le fichier, si tu ne mets pas un while quelque part, tu ne pourras pas lire plus d'un caractère...

essaie de faire 2 programmes, un pour le post et l'autre pour lire le fichier


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Ethernet : client.available() toujours égal à 0


arduino

Comments