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 :

Problème Signaux/ Slot dans un Thread


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Problème Signaux/ Slot dans un Thread
    Bonjour ,j'aimerai savoir comment s'effectue la gestion de signaux slot dans un Thread ?

    J'effectue un projet pour le lycée et quand je passe par le debugger étape par etape (IDE : QT) cela marche mais dès qu'il s'agit d'utiliser ça en temps réels il est impossible que cela marche.

    Le problème c'est que le programme recupére les informations de la carte après il récupere les informations du code barre (qui est scanné par un lecteur code barre) ensuite il faut poser l'artciel sur la balance mais a ce moment la cela ne s'efffectue pas.

    Est ce que quelqu'un pourrai m'eclaircir. Merci

    Voici les code principaux ou ce pose le problème.

    Si vous souhaitez d'autres renseignement n'hesitez pas.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Voila la suite du code si besoin :
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Le problème c'est que je ne peut même pas arriver a trouver le problème car avec le debugger ça marche.

    Le main.cpp fini par la fonction : Et donc tout ce qui ce passe après cela n'est pas géré par l'ihm. L'ihm devrai m'afficher "Scanner votre conteneur sinon retirer votre carte" mais il bloque à " Poser le conteneur sur la balance". J'ai essayé de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QApplication::processEvent();
    Mais cela ne met pas à jour l'interface. Merci de votre aide.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Si vous gérez correctement les erreurs, vous devez avoir un fichier de log ou une fenêtre de trace avec tout plein d'indices.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé le problème mais je ne sais pas comment je peut le résoudre. La dernière méthode appelé par l'ihm en mode "Normal (non Debug)" est la méthode (le_editing_finished()). Du coup ne pensant plus attendre d'autres choses. L'ihm retourne a.exec(). Comment je peut faire pour que l'ihm ne s'arrete pas lors de l'evenement le_editing_finished().

    Merci de votre réponse.

  6. #6
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Note : je n’ai pas regardé tout le code.

    Normalement, le a.exec() lance la boucle d’évènements principale, qui ne se termine que dans les cas suivants :
    - quit() est appelé
    - une erreur survient (segfault ou similaire)
    - le thread est terminé de manière violente (pas bien, à peu près équivalent au cas précédent)

    Quelques questions quand même :
    - pourquoi mettre la balance dans un thread à part ?
    - pourquoi faire dériver cette classe de QThread : c’est déprécié comme manière de faire
    - idem pour la gestion de la bdd

    Vu l’application cible, je pense que passer par un QSocketListener pour la balance et des appels synchrones pour la bdd serait largement suffisant (à moins qu’utiliser les threads ne soit un exercice, évidemment).

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    C'étais en effet pour travailler sur les thread car cela faisait partie de mon projet de validation de BTS. Durant la Tache de mise en oeuvre je suis passé par événement et pas un QTimer mais durant l’intégration j'ai voulu corser un peu tout ça.
    Je ne connais pas QSokectListener. J'ai pus avancer un peut dans ma démarche et donc afficher "Scanner votre conteneur ou retirer votre carte" mais si le poids n'est pas stable à ce moment (donc contient kg et est différent de 0.00kg) alors l’événement ne réussi pas à faire la suite des Signaux.
    Merci de ta réponse white. Ce qu'il fallais surtout que je gère c'étais la gestion de la carte à puce par un Thread afin de pouvoir boucler tant que la carte n'est pas insérer ou quand elle est insérer tester si la carte est encore présente.
    Tout le reste n'etais pas forcement utile de passer par un thread.

Discussions similaires

  1. problème avec ReadKey dans un thread
    Par the_only_kraft dans le forum C#
    Réponses: 3
    Dernier message: 01/09/2013, 21h01
  2. Réponses: 0
    Dernier message: 22/04/2012, 22h23
  3. Problème d'affichage dans un thread
    Par mouette999 dans le forum C#
    Réponses: 8
    Dernier message: 29/11/2011, 17h15
  4. Problème de slot dans Qt
    Par Raphyy dans le forum Débuter
    Réponses: 7
    Dernier message: 18/01/2011, 15h45
  5. problème d'affichage dans un thread
    Par innosang dans le forum POSIX
    Réponses: 8
    Dernier message: 20/12/2006, 20h40

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