IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Est-il possible d'inclure une connexion éthernet dans une fonction ?


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Est-il possible d'inclure une connexion éthernet dans une fonction ?
    Bonjour !

    Je suis débutant (a peine 3 mois), merci par avance de votre indulgence

    Je bloque sur un problème de fonction...

    J'aimerai transformer ceci en fonction (car cela se répète plus de 20 fois juste en modifiant "digitalRead", "boutonRelacheD..." "etatD..." ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
      if (digitalRead(2) == HIGH) { // PULLUP = le bouton est relâché en HIGH   //// DIGITAL 1 SUR PIN 2 ////
                                  if (!boutonRelacheD1) 
                                     { 
                                     boutonRelacheD1 = true;
                                     Ethernet.begin(mac, ip, subnet, gateway);
                                     if (client.connect(ipx, 80)) {
                                                                  Serial.println("TEST OFF");
                                                                  client.println("GET /control.json?SystemOFF=001 HTTP/1.0");
                                                                  client.println("Host: 192.168.1.100");
                                                                  client.println("Connection: close");
                                                                  client.println();
                                                                  client.stop();
                                                                  }
                                    }
      } else {  // le bouton est appuyé. est-ce un nouvel appui?
             if (boutonRelacheD1) { // le bouton n'était pas appuyé avant -> nouvel appui, on inverse l'état
                                  boutonRelacheD1 = false;
                                  etatD1 = (etatD1 == HIGH) ? LOW : HIGH; // etat = 1 - etat;
                                  Ethernet.begin(mac, ip, subnet, gateway); 
                                  if (client.connect(ipx, 80)) { 
                                                               Serial.println("TEST ON");
                                                               client.println("GET /control.json?SystemON=001 HTTP/1.0");
                                                               client.println("Host: 192.168.1.100");
                                                               client.println("Connection: close");
                                                               client.println();
                                                               client.stop();
                                                               }
                                 }
              }
    Résultat: après de nombreux tests, j'arrive a me "bricoler" une fonction qui marche bien avec Serial.print, mais toute la partie connexion réseau
    est ignorée, pourquoi ? Est-il possible de mettre des fonctions réseaux dans une fonction ?
    Merci beaucoup pour vos lumières !!!!
    Thierry

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonsoir,

    ta fonction nécessite 3 paramètres : 1 entier, et 2 booléens. Mais 2 de ces variables sont modifiées dans la fonctions, elles doivent donc être passées par référence et non par valeur.

    Donc :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void connection(int numPort, bool &btn, bool &etat)
    {
        if (digitalRead(numPort) == HIGH) 
        { 
            if (!btn) 
            { 
                btn = true;
    // suite du code
        }
        else
        {
            if (btn) 
            {
                    btn = false;
                    etat = (etat == HIGH) ? LOW : HIGH;
    // suite du code
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Merci beaucoup, je vais étudier en détail cette piste

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Excellent, ça marche !

    Merci Auteur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 2
    Dernier message: 20/05/2009, 11h41
  3. Réponses: 7
    Dernier message: 29/01/2009, 13h52
  4. Réponses: 15
    Dernier message: 09/05/2008, 17h11
  5. Réponses: 7
    Dernier message: 08/02/2008, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo