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++Builder Discussion :

communication de deux elements via des threads


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 8
    Points
    8
    Par défaut communication de deux elements via des threads
    Bonjour, je voudrais faire un programme assez "simple"

    J'ai une image qui se deplace dans un cadre ou je place des obstacles ...

    Cela est censé simuler un robot qui évolue dans une pièce où se trouvent des objets. Le robot doit se déplacer dans la pièce et éviter les obstacles.
    Jusque-là, pas de problème. Les fonctions sont codées.

    Le vrai problème est celui ci : je veux faire une sorte de télécommande dans ce programme qui me permettra d'envoyer à tout moment des ordres au robot.

    Je pense à un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while not (fin)
    {
         if (message_telecommande)
               ...
               traitement message
               ...
         else
               ...
               comportement autonome du robot
               ...
    }
    Fin serait ici un booleen que l'on passe a vrai grace a la telecomande

    Je ne vois pas trop comment réaliser ceci. Je pense qu'il faut utiliser un thread pour la télécommande et un thread pour le robot. N'ayant jamais réellement utilisé les threads, je ne sais pas trop quand utiliser les synchronisation, comment faire communiquer la télécommande avec le robot...

    De plus, si ce n'est pas trop demander, ou mettriez vous les différentes parties de code :
    Il y a des fonctions et procedures qui permettent de faire se deplacer le robot et de lui faire faire différentes actions (s'eteindre par exemple)

    Il y a une procedure d'autonomie qui utilise ces fonctions afin de laisser le robot "agir de son propre chef"

    Il y a aussi les procedures de la telecommande qui se contentent d'envoyer des messages.

    Quand le robot recoit un message de la telecommande, il cesse d'agir seul (peut finir la derniere opération commencée) et selon le message exécute une action (les memes fonctions de déplacement ...)

    Merci de vos indications, je cherche a faire du code propre donc évitez le "bidouillage". Un peu de code sur la partie des threads (si necessaire) ne serait pas de trop

    Bonne journée a tous ceux qui me liront et excellente journée a tous ceux qui me répondront

    PS : BCB 6 sous windows

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Une solution (parmi tant d'autres !) : les "messages" de la télécommandes sont représentés par des objets, dans lequel on stocke les données qui seront utiles au robot. Quand une commande doit être envoyée, elle est stockée sur une Queue (TQueue) publique.

    Le thread robot consiste à effectuer les actions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tant que (thread pas terminé)
     si (Queue pas vide) alors
       depiler un message
       traiter ce message
     sinon
        comportement autonome du robot
     fin  
    fin tant que
    L'accès à la Queue globale doit être effectué à l'aide de sections critiques (TCriticalSection) pour que deux threads ne manipulent pas l'objet en même temps.

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

Discussions similaires

  1. Communication de deux classes via interface
    Par Mednet dans le forum Débuter avec Java
    Réponses: 20
    Dernier message: 11/05/2013, 17h21
  2. Réponses: 2
    Dernier message: 19/04/2012, 17h38
  3. Mettre à jour deux tables via des cases à cocher
    Par ElBono dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2011, 08h42
  4. Réponses: 2
    Dernier message: 10/12/2010, 11h52
  5. Communication entre deux applications via un serveur
    Par YoshK dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 01/12/2010, 20h43

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