Go Down

Topic: traitement chaine de caractere ? (Read 147 times) previous topic - next topic

windaube21

bonjour a tous :)

je vous explique mon problème :

avec une interface W5100 et une arduino uno je pilote un relais en "attaquant" sa page web de cette manière "http://IP_ARDUINO?1"
le "?" déclenche la lecture ( d'apres ce que je comprend du code trouver sur le web ) et le "1" déclenche une action dans un "switch/case"

jusque la tout va bien et cela fonctionne


maintenant je voudrai interfacer avec un autre logiciel qui lui va envoyer une chaine de caractère du type "http://IP_ARDUINO?Chaine_de_caractère"

cette chaine ne dépassera pas les 8 caractère donc relativement courte

voici la partie qui fonctionne bien


Quote
void loop(){

 

    EthernetClient client = server.available();
    if(client){
        boolean currentLineIsBlank = true;
        boolean sentHeader = false;
        while(client.connected()){
            if(client.available()){
                if(!sentHeader){
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println();

                    sentHeader = true;
                }
                char c = client.read();
                if(reading && c == ' '){reading = false;}
                if(c == '?'){reading = true;}
                if(reading){
                    Serial.print(c);

               
                    switch(c){
                        case '1':
                             digitalWrite(relay, LOW);
                             delay(2000);
                             digitalWrite(relay, HIGH);
                            break;
                     
                    }
                }
                if(c == '\n' && currentLineIsBlank){break;}
                if(c == '\n'){
                    currentLineIsBlank = true;
                }else if(c != '\r'){
                    currentLineIsBlank = false;
                }
            }
        }
        delay(1);
        client.stop();
    }
}
la question est donc avec quoi remplacer le switch/case pour traiter une chaine de caractère

j'avais penser a if( c== "?Chaine_de_caractère") mais cela ne déclenche rien

merci a vous


biggil

pour comparer 2 chaines de caractères, il faut utiliser la fonction strcmp()

windaube21

bonjour

merci de la réponse, j'avais mi cette fonction de coté

mais je ne sais pas comment déclarer mes valeur qui devront être stocker visiblement il a "char" et "string" mais il y a une histoire de tableau qui reste flou pour moi

hier j'ai fait quelle que recherche et je pense avoir trouver un bout de code qui permet de crée une chaine de caractère en récupérant 1 a 1 les caractère qui arrive

je vais tester dans la journée

je pense avoir toute mes réponse dans ce topic

http://forum.arduino.cc/index.php?topic=283097.0

je vérifie sur table dans la journée :)

Go Up