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 :

Variable static int dans une routine est toujours initializée


Sujet :

Arduino

  1. #1
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 345
    Points : 175
    Points
    175
    Par défaut Variable static int dans une routine est toujours initializée
    Bonjour

    Le problème que je rencontre n'est peut-être pas spécifique au C sur Arduino:
    J'ai une routine me permettant d'afficher des messages extraits d'un tableau en Flash Memory.
    Pour afficher l'ensemble des messages en passant de l'un à l'autre j'ai défini une variable static int initialisée à 7 qui s'incrémente au fil des passages et revient à 7 en fin de liste.
    Mon problème est que cette variable s'initialise toujours lors de l'appel de la routine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //************************Affiche les commandes disponibles**************************
    void afficheCommandes(){
      static int pos=7;
      afficheLcd(message(0),message(pos));                         //routine d'affichage sur LCD
      pos++;
      if(pos==13) pos=7;
      if(btPresent) {for(int i=7;i<13;i++) {envoiErreur(i);}}          //routine d'affichage sur Bluetooth
      delai('s',3);
      lcd.clear(); lcd.noBacklight();
    }
    Je ne vois pas où est mon erreur. Merci d'une aide.
    Michel

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 808
    Points : 5 664
    Points
    5 664
    Par défaut
    Mon problème est que cette variable s'initialise toujours lors de l'appel de la routine
    comment le savez vous? (affichez la valeur dans le moniteur série)

    il n'y a pas d'erreur, ça doit marcher comme c'est écrit. appelez vous afficheCommandes() de nombreuses fois ?

    postez tout le code, il peut y avoir un débordement ailleurs...

  3. #3
    Membre habitué
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 345
    Points : 175
    Points
    175
    Par défaut
    Cette réponse me conforte dans l'idée que cela doit fonctionner.

    comment le savez vous? (affichez la valeur dans le moniteur série)
    Je le savais parce que je l'affichais sur mon afficheur LCD.

    appelez vous afficheCommandes() de nombreuses fois ?
    Non, c'est uniquement lorsque je désire me remémorer les commandes.

    J'ai répondu à la première question à l'imparfait parce que fort de votre réponse, j'ai remanié un peu le code et, à vrai dire je ne sais pas vraiment pourquoi, mais cela fonctionne maintenant

    Merci Jay M pour l'aide que vous apportez aux perdus du C/C++ sur Arduino.

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 808
    Points : 5 664
    Points
    5 664
    Par défaut
    magie noire !

    c'est toujours bon de comprendre pourquoi ça ne marchait pas avant, ça pourrait mettre en lumière un bug dormant.

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

Discussions similaires

  1. L'utilisation d'une variable dans une formule est-elle bloquante
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2011, 11h09
  2. rendre une partie d'une phrase variable dans une cellule, est ce possible?
    Par voldo2142 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2008, 09h08
  3. comment mettre des int dans une char??
    Par gronaze dans le forum C
    Réponses: 5
    Dernier message: 21/04/2006, 17h02
  4. variables de session dans une popup
    Par erka dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2005, 19h29
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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