Go Down

Topic: Visibilité d'un objet ethernet par des fonctions (Read 950 times) previous topic - next topic

tux3132

Bonjour à tous

Dans ma fonction loop je déclare un objet Ethernet du genre :
Code: [Select]
EthernetClient unclient;
ensuite j'appelle une fonction dans laquelle j'utilise "unclient", par exemple :
Code: [Select]
void mafonction(...)
{
...
   if (unclient.available()) {
    ...
     }
...
}

et là le compilateur ne sait pas quoi faire car il ne connaît pas "unclient" dans "mafonction". Je suppose que c'est un problème de déclaration mais je ne sais pas comment faire. Quelqu'un a sûrement une idée.

Merci d'avance de votre aide et bon travail à tous.

Bernard.

SesechXP

Salut,

En effet, c'est un problème de portée de variable. Il faudrait plutôt sortir la déclaration de unclient de la fonction loop et faire quelque chose comme ça :
Code: [Select]

EthernetClient unclient;

void loop()
{

}

void mafonction(...)
{
...
  if (unclient.available()) {
   ...
    }
...
}
Julien - www.idreammicro.com

fdufnews

Les variables déclarées à l'intérieur d'une fonction ne sont visibles qu'à l'intérieur de cette fonction.
De même, les variables déclarées à l'intérieur d'une boucle ne sont visibles qu'à l'intérieur de cette boucle.

C'est ce que l'on appelle la portée des variables

schizophrene

Surtout qu'en mettant la déclaration dans la fonction loop(), tu déclares ton objet à chaque tour du programme...

Il vaut mieux le déclarer une seule fois, avant la fonction setup()

Go Up