retour valeur fonction et parametres dans une autre fonction

Bonjour j ' essai de coder un programme pour gerer les relais par le net dans une integration de serveur domotique .

Dans ce programme j ' ai 2 fonctions la premiere devrait me renvoyer le numero du relais dont je dois modifier la sortie pin .

la 2eme est donc censée me modifier la sortie pin .

Je ne sais pas si je m ' y prends bien mais bon du coup le compilateur ne veut pas me faire ce que je veux .

voici le code :

int GET(EthernetClient cl) {
  boolean lu = 0; //variable pour indiquer l'état de lecture
  while (cl.available()) { // tant qu'il y a des infos à transmettre
    char c = cl.read(); // on lit le caractère
    delay(1); //delai de lecture
    if (c == '?' && lu == 0) { //si "?" repéré
		c = cl.read(); //on lit le caractère suivant qui contient la donnée
    	if (c == 'r') { //si code reçu
			int numero_Relais =  cl.read(); //on lit le caractère suivant
			delay(1); //delai de lecture
     		if ( numero_Relais >= 0 && numero_Relais < nombre_De_Relais ) {
				gestionRelais();
			}
		}
      lu = 1; // on dit qu'on a lu l'info
    }
  } // fin de while lecture des infos .
return (numero_Relais) ;
}

// fonction pour gerer les pin relais sortie etc .
void gestionRelais(numero_Relais) {
	for ( int i = 0; i < nombre_De_Relais; i++ ) {
	}
  if ( numero_Relais ) {
    etatRelais = !etatRelais; //on change l'état du relais
        digitalWrite(pinRelais, etatRelais); //on met à jour le pin
        Serial.println(etatRelais);  // verification sortie serie .
  }
}

et l ' erreur retourné par le cmpilateur :
transmission_par_reseau:142: error: variable or field 'gestionRelais' declared void
void gestionRelais(numero_Relais) {

vous avez des idées de pourquoi ca ne marche pas , ou mon approche est totalement fausse ?

:smiley:

je ne connais pas le langage C , je connais plutot le PHP , et encore ca fait quelques années que je n ' ai plus vraiment pratiqué ...

j ' ai modifié le code un tant soi peu des 2 fonctions , ca progresse , le compilateur , compile .

il ne reste plus qu ' a arriver a faire ce que je veux :

int GET(EthernetClient cl) {
  boolean lu = 0; //variable pour indiquer l'état de lecture
  while (cl.available()) { // tant qu'il y a des infos à transmettre
    char c = cl.read(); // on lit le caractère
    delay(1); //delai de lecture
    if (c == '?' && lu == 0) { //si "?" repéré
    c = cl.read(); //on lit le caractère suivant qui contient la donnée
      if (c == 'r') { //si code reçu
      
      char numero_Relais =  cl.read(); //on lit le caractère suivant
      delay(1); //delai de lecture
      if ( (isAlphaNumeric(numero_Relais)) && (numero_Relais >= 0) && (numero_Relais < nombre_De_Relais) ){
        int numero_Relais = numero_Relais;
        gestionRelais(numero_Relais);
      }
    }
      lu = 1; // on dit qu'on a lu l'info
    }
  } // fin de while lecture des infos .
return (numero_Relais) ;
}

// fonction pour gerer les pin relais sortie etc .
void gestionRelais(int numero_Relais) {
  if ( numero_Relais ) {
    etatRelais = !etatRelais; //on change l'état du relais
        digitalWrite(pinRelais, etatRelais); //on met à jour le pin
        Serial.println(etatRelais);  // verification sortie serie .
  }
}

je pense avoir corriger quelques erreurs .

merci pour vos remarques .

Y aurait il une façon sans boucle " for " et plus elegante de proceder afin de mettre a jour le pin dans cette partie de code ?

// fonction pour gerer les pin relais sortie etc .
void gestionRelais(int numero_Relais) {
 for ( int i=0; i<nombre_De_Relais; i++ ) {
 if ( tableau_Etat_Relais[i] == numero_Relais ) {
     tableau_Etat_Relais[i] = !tableau_Etat_Relais[i]; //on change l'état du relais
         digitalWrite(tableau_Pin_Relais[i], tableau_Etat_Relais[i]); //on met à jour le pin
         Serial.println(tableau_Etat_Relais[i]);  // verification sortie serie .
 }
 }
}

a priori cela serait pret a fonctionner , si il n ' y avait pas une erreur dans mon code ^^^^ .

je presume dans la fonction GET , car lorsque je me connecte sur la page cela marche , seul probleme apres avoir cliquer sur le lien cela mouline dans le vide indefiniement ....

je nettoie le code , puis le poste une fois propre a destination des pros du C , car la pour ma part je seche . :confused: