Arduino Forum

Forum 2005-2010 (read only) => International => Français => Topic started by: KiliYaBB on Jul 23, 2009, 12:45 pm

Title: Besoin d'explication sur client.read
Post by: KiliYaBB on Jul 23, 2009, 12:45 pm
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 !
Title: Re: Besoin d'explication sur client.read
Post by: fdufnews on Jul 23, 2009, 10:33 pm
En fait la fonction loop est une boucle infinie cachée.
L'explication se trouve là :http://arduino.cc/en/Reference/Loop
Title: Re: Besoin d'explication sur client.read
Post by: KiliYaBB on Jul 24, 2009, 08:56 am
Ah ba oui, ok, merci !
Title: Re: Besoin d'explication sur client.read
Post by: julien@pobot.org on Jul 24, 2009, 04:58 pm
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)