Bonjour ,
Donc comme est dit dans le titre je recherche a traiter une requete GET avec la librairie webduino , rien ne vaut un exemple pour illustrer :
Je cherche a récuperer les information après le '/' et mes informations seront séparer par un ';' comme ceci : 192.168.X.X/newsimu;consigne;type;P;I;D;intervalle
personnellement je pensais à faire comme ceci :
void StartSimu(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
if ( type == WebServer::GET )
{
int i ;
i = 0 ;
char tab[10] ;//créer un tableau
char c ;
c = server.read();
while( c != ';' ){//ranger les parametres dans ce tableau avec le séparateur ';'
c = tab[i] ;
}
i++ ;
// comparer les chaines que je veux
}
}
Est ce faisable ? Comme c'est assez pressé je préfère vous demandez d'abord pour que je ne trompe pas
Bonne journée
Ok j'ai compris le principe cependant il n'y a que le "newimu" qui va rester constant le reste va être remplacer par de valeurs numériques.
Donc en fait je ne peux pas comparer mot a mot :* .
Désolé j'ai oublié de le préciser .
Et encore une dernière chose , comment je peux lancer cette requête la ?
Parcque , la je l'ai mise dans une fonction et donc ca fait comme ceci :
webserver.addCommand("newsimu",&newsimu);
Mais du coup je fais comment pour avoir mes valeurs que je dois récupérer ?
J' y ai réfléchi mais franchement je ne vois pas comment je peux faire , ou alors on peut appeler la fonction dans le setup enfin je vois pas et je pense que je m'embrouille tout seul enfin si t'as une solution merci
Enfin je ne sais pas si je m'exprime bien donc si tu comprend pas dit le moi x)
Ah oui et question a part est ce possible de tracer la courbe grâce a mes données sur le site web ?
Roxas77:
Et encore une dernière chose , comment je peux lancer cette requête la ?
Parcque , la je l'ai mise dans une fonction et donc ca fait comme ceci :
webserver.addCommand("newsimu",&newsimu);
Colle ta commande en tant que commande par defaut : setDefaultCommand()
Et fait des requêtes du style : 192.168.X.X/**?**newsimu;consigne;type;P;I;D;intervalle
(ne pas oublier le "?")
Roxas77:
Ah oui et question a part est ce possible de tracer la courbe grâce a mes données sur le site web ?
En javascript tu peut, sinon google fourni un API pour ça :
Salut ,
désolé de te déranger encore mais mon code ne fonctionne toujours pas j'ai mis campagne comme tu m'as dit , je l'ai rajouté a la chaine de sscanf je pense que je n'ai pas compris quelque chose qui me bloque , voila ce que j'ai changé :
void newsimu(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
if ( type == WebServer::GET )
{
double consigne , intervalle , p , i , d ;
int type ;
int j ;
j = 0 ;
char tab[52] ;
char c ;
c = server.read();
do {
while(server.available() < 8);/* Attente de la chaine "campagne" */
}while(server.read() != 'campagne' );/* Tant que chaine != campagne */
while( c != '!' ){
c = tab[j] ;
if ( c ='!'){
tab[j] = '\0';
}
j++ ;
}
if(sscanf(tab, "campagne?newsimu;%d;%d;%d;%d;%d;%d!", consigne, type, p , i , d , intervalle )== 6){
Serial.println(consigne);
Serial.println(type);
Serial.print(p);
Serial.print(i);
Serial.print(d);
Serial.print(intervalle);
}
Tout d'abord je te remercie pour le lien ça m'a aider pour autre chose ^^ .
Ca ne fonctionne toujours pas , pourtant je fais comme tu m'as dit et essayer d'autres choses comme :
if(sscanf(url_tail, "?newsimu;%lf;%d;%lf;%lf;%lf;%lf", consigne, type, p , i , d , intervalle) == 6) // ce que tu m'as dit
//if(sscanf(url_tail, "commande?newsimu;%lf;%d;%lf;%lf;%lf;%lf", consigne, type, p , i , d , intervalle) == 6) // ce que j'ai essayer désespérément
void setup(){
//...
webserver.addCommand("commande", &newsimu);
//...
}
Fait un truc bateau dans ta fonction : affiche le contenu de url_tail avec Serial.println() pour voir à quoi il ressemble et si ton callback est bien appelé