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 :

Probleme boucle FOR


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Par défaut Probleme boucle FOR
    Bonjour,
    je travaille actuellement sur un module GSM afin de découvrir comment il fonctionne etc..
    J'ai récupérer un programme sur internet et je l'ai modifié car je souhaiterai créer un "identificateur" de numéro.
    Voici le programme:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #include <GSM.h> // Ajout de la librarie GSM
    
    #define CODEPIN "" // Code pin du téléphone
    
    GSM gsmAccess;
    GSMVoiceCall vcs;
    
    
    char numtel[20]; // Enregistre l’appel entrant
    char numerau[] = {"0602053696"}; // Numéro autorisé
    int i;
    
    void setup() {
      // Initialise les communications serial et attend que le port s'ouvre:
      Serial.begin(9600);
      while (!Serial) {
        ; // Attente de connection du port serial. Nécessaire pour le port USB natif seulement  
      }
    
      Serial.println("Initialisation..");
    
      boolean notConnected = true; // Etat de connection
    
      // Lancement GSM shield
      while (notConnected) {
        if (gsmAccess.begin(CODEPIN) == GSM_READY) {
          notConnected = false;
        } else {
          Serial.println("Pas connecté");
          delay(1000);
        }
      }
    
      vcs.hangCall(); // Cela permet de s’assurer que le modem signale correctement les événements entrants.
    
      Serial.println("Vous pouvez appeler");
    }
    
    void loop() {
      switch (vcs.getvoiceCallStatus()) { //Vérifier l’état de l’appel 
        case IDLE_CALL: // rien ne se passe
    
          break;
    
        case RECEIVINGCALL: // quelqun nous appelle
    
          Serial.println("APPEL ENTRANT");
    
          vcs.retrieveCallingNumber(numtel, 20); // recuperer le numéro appellant
    
          // Afficher le numéro appelant
          Serial.print("Number:");
          Serial.println(numtel);
    
          break;
    
    
      }
        Serial.println(numtel);
        for (int i = 0; i < 9; i++) {
          if (numtel[i+3] == numerau[i+1]) {
        //vcs.answerCall();
         
          Serial.println("autorise");
          } else {
       
         // vcs.hangCall();
          Serial.println("refuse");
          }
        }
       }
    Le problème est le suivant: Il execute automatiquement la commande "Serial.println("refuse");" dans le moniteur série à l'infini et je ne sais guère pourquoi..
    Pourriez-vous m'apporter de l'aide svp (le problème provient de la parti en rouge).

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Par défaut
    On a pas le détail des appels plus haut niveau, mais j'imagine que la fonction loop() est appelée dans une... boucle ?
    Probablement infinie, dans l'attente du changement d'état de getvoiceCallStatus()Du coup, on passe sans cesse dans la boucle for (int i = 0; i < 9; i++),
    et comme le test if (numtel[i+3] == numerau[i+1]) échoue,
    alors on passe dans Serial.println("refuse");.

    Encore une fois j'imagine que l'on veut faire cette boucle for que dans le cas où getvoiceCallStatus() renvoie RECEIVINGCALL, or cette boucle est en dehors du switch case.

  3. #3
    Membre confirmé Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Par défaut
    Citation Envoyé par Piraaate Voir le message
    On a pas le détail des appels plus haut niveau
    Que voulez-vous dire dans cette phrase ?

  4. #4
    Membre confirmé Avatar de pite0611
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2018
    Messages : 62
    Par défaut
    ok j'ai compris mon erreur grâce à ton intervention. En effet il suffisait simplement de déplacer le bout de code dans le switch case... Merci beaucoup pour l'aide et voici le programme pour ceux que ça peux aider:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    #include <GSM.h> // Ajout de la librarie GSM
     
    #define CODEPIN "" // Code pin du téléphone
     
    GSM gsmAccess;
    GSMVoiceCall vcs;
     
     
    char numtel[20]; // Enregistre l’appel entrant
    char numerau[] = {"0603249714"}; // Numéro autorisé
    int i;
     
    void setup() {
      // Initialise les communications serial et attend que le port s'ouvre:
      Serial.begin(9600);
      while (!Serial) {
        ; // Attente de connection du port serial. Nécessaire pour le port USB natif seulement  
      }
     
      Serial.println("Initialisation..");
     
      boolean notConnected = true; // Etat de connection
     
      // Lancement GSM shield
      while (notConnected) {
        if (gsmAccess.begin(CODEPIN) == GSM_READY) {
          notConnected = false;
        } else {
          Serial.println("Pas connecté");
          delay(1000);
        }
      }
     
      vcs.hangCall(); // Cela permet de s’assurer que le modem signale correctement les événements entrants.
     
      Serial.println("Vous pouvez appeler");
    }
     
    void loop() {
      switch (vcs.getvoiceCallStatus()) { //Vérifier l’état de l’appel 
        case IDLE_CALL: // rien ne se passe
     
          break;
     
        case RECEIVINGCALL: // quelqun nous appelle
     
          Serial.println("APPEL ENTRANT");
     
          vcs.retrieveCallingNumber(numtel, 20); // recuperer le numéro appellant
     
          // Afficher le numéro appelant
          Serial.print("Number:");
          Serial.println(numtel);
     
              Serial.println(numtel);
        for (int i = 0; i < 9; i++) {
          if (numtel[i+3] == numerau[i+1]) {
        vcs.answerCall();
     
          //Serial.println("autorise");
          } else {
     
         vcs.hangCall();
          //Serial.println("refuse");
          }
        }
     
          break;
      }
     }

Discussions similaires

  1. Probleme boucle For
    Par uldrych.maillet dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/12/2007, 15h09
  2. Probleme boucle For Each controls
    Par Tusbar dans le forum Windows Forms
    Réponses: 21
    Dernier message: 13/09/2007, 23h56
  3. probleme boucle for
    Par ricoree78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/05/2007, 12h27
  4. probleme boucle for
    Par michael75 dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 25/01/2007, 18h51
  5. Probleme boucle for
    Par griese dans le forum Linux
    Réponses: 4
    Dernier message: 06/12/2006, 14h39

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