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 ?
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 .
}
}
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 .