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

C++ Discussion :

Boucle infinie qui empêche toute action


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Par défaut Boucle infinie qui empêche toute action
    Bonjour à tous ! Je développe actuellement une application en C++ (avec wxWidgets), sous wx-devcpp. Mon programme doit lire en continu des données qui proviennent du port série (via wxSerialPort). Cette action s'effectue après un clic sur un bouton. On rentre donc dans une fonction, et à ce moment-là, il y a une boucle du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char* receivedBytes ;
    while (1) {
       int rd = serial->ReadUntilEOS(&receivedBytes,"\n",100) ;
     
       if (rd > 0) {
          ...
       }
     
    }
    La principale condition d'arrêt de la lecture sur le port (qui n'est pas là) est temporelle (après n minutes).
    Le problème, c'est que cela empêche d'autres actions / événements (clic sur un bouton, redimentionnement de la fenêtre, etc...) -c'est tout à fait normal d'ailleurs-. Ma question est donc : comment pourrais-je faire pour permettre à l'utilisateur de se ballader dans les menus (entre autre ) tout en continuant à lire les données sur le port série? Je suppose qu'il faudrait que je change de technique (j'ai déjà pensé à ecrire une classe qui hériterait de wxSerialPort et qui enverrait des événements quand des données sont lues, mais le problème serait finalement le même non?)
    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Par défaut
    Solution habituelle pour ce genre de probleme: les threads.

    Dans ce cas precis, 2 threads : Un qui s'occupe de la lecture et un qui s'occupe de tout le reste

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 71
    Par défaut
    Merci beaucoup ! Après un rapide coup d'oeil, je crois que c'est exactement ce qu'il me faut. Merci

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

Discussions similaires

  1. Une boucle infinie qui ne freeze pas ?
    Par humitake dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 14/04/2011, 11h45
  2. Boucle infinie qui va lire dans un fichier et afficher les dernières lignes
    Par ApocKalipsS dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/05/2010, 18h27
  3. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  4. Select qui fais une boucle infinie
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 28/03/2006, 17h29

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