Go Down

Topic: Besoin d'explication sur client.read (Read 925 times) previous topic - next topic

KiliYaBB

Bonjour,

Quand on s'amuse avec l'ethernet shield, avec lexemple suivant on peut lire les infos retournés par google sur arduino :

void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);


delay(1000);


Serial.println("connecting...");


if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}


void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}


if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}


Je ne comprends pas :

if (client.available()) {
char c = client.read();
Serial.print(c);
}

Parce que 'c' est un caractere, on est ok ?

donc on lit 'c' et on limprime

je ne comprends pas comment, sans boucle, on peut lire tout ce qui vient du serveur

on aurait du boucle du style

while (il y a des donnees a lire)
{
char c = client.read();
Serial.print(c);
}

je comprendrais mais là je ne comprends pas comment cette fonction arrive a afficher des phrases et des phrases...

Merci pour vos lumières !

fdufnews

En fait la fonction loop est une boucle infinie cachée.
L'explication se trouve là :http://arduino.cc/en/Reference/Loop

KiliYaBB


Luj06

#3
Jul 24, 2009, 04:58 pm Last Edit: Jul 24, 2009, 04:59 pm by julien@pobot.org Reason: 1
Et je me demande si ça devrait pas être

while (client.available() > 0) {

}

si client.available() donne un nombre d'octets encore pas lus et pas un booléen. (dépends de la librairie, c'est le cas avec le port série en tout cas)

Go Up