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

Multithreading Discussion :

Eviter le multi tache?


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut Eviter le multi tache?
    Bonjour a tous,

    Je developpe une toute petite application qui est charge de lire des donnees sur le port serie.
    Mon programme fonctionne correctement mais mon probleme est que j'ai utilise un boutton pour faire une lecture du port ce qui n'est pas tres pratique.

    Ayant quelques vagues notions de multitaches je me suis dit que faire une tache qui se reveillerait sur l'arrive d'un message sur le port pourrait etre une solution mais apres avoir essayer de lire la doc de Qt je dois dire que je me suis un peu decourage

    J'en appelle a vos connaissances, est-il possible de lire en temps reel les informations arrivant sur mon port sans passer par du multi tache?

    Et si non, si vous avez quelques indications pour debuter le multitache? Je tiens a preciser que j'ai appris le multitache a l'ecole avec un noyau perso donc j'ai peut etre quelques mauvaises habitudes.

    Merci d'avance et excusez moi pour les accents j'utilise un clavier qwerty

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut
    Citation Envoyé par Fanta310 Voir le message
    J'en appelle a vos connaissances, est-il possible de lire en temps reel les informations arrivant sur mon port sans passer par du multi tache?
    Tu pourrai utiliser un QTimer pour utiliser le signal timeout et faire la lecture a temps régulier. Le problème est que si la lecture est longue ou bloquante, ton ihm va freezer

    Et si non, si vous avez quelques indications pour debuter le multitache? Je tiens a preciser que j'ai appris le multitache a l'ecole avec un noyau perso donc j'ai peut etre quelques mauvaises habitudes.
    La doc de QTread et les exemple. Regarde sur le forum tu trouvera quelque discution. Tu peut toujours poster des question ici

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    "Note that QCoreApplication::exec() must always be called from the main thread (the thread that executes main()), not from a QThread. In GUI applications, the main thread is also called the GUI thread because it's the only thread that is allowed to perform GUI-related operations."

    Je n'ai jamais creer de classes contenant le main dois-je juste remplacer mon QApplication par QCoreApplication dans le main, tout simplement?

    Donc d'apres ce que j'ai compris les taches sont creees comme des classes? Y'a t'il une notrion de prioriter et/ou de quotas de temps avec Qt?


    Pour resumer, mon main se resumerait a :
    int main (int argc, char *argv[]){

    QCoreApplication app(argc, argv);

    FenPrincipale maFenetre;
    maFenetre.show();

    return app.exec;
    }

    Et ma classe FenPrincipale qui serait une tache qui gere mon IHM donc serait une boucle infinie, je peux donc verifier la reception de message lorsque j'ouvre le port.

    Lorsque je recois un message je reveil la tache pour la lire et j'envois le message recupere a mon IHM qui l'affichera dans un QTextEdit.

    Ca a l'air coherent?

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    Rebonjour a tous,

    Voila comment j'ai pris mon probleme :

    . Dans mon main j'ai remplacer le QApplication par QCoreApplication.

    . J'ai modifier ma classe MyPort (qui lit le port) et j'ai ajouter : QThread dans sa liste d'heritage. J'ai mis la partie concernant la lecture du port dans la fonction run()

    . Dans ma classe FenPrincipale (qui gere l'IHM) lorsque je clic une fois sur le bouton "lire le port" je fait my_port->start(QThread::HighPriority). Sachant que my_port est un pointeur de la classe MyPort et appartient a la classe FenPrincipale.

    Cela est-il suppose fonctionner ou je fais totalement fausse route car pour le moment ca ne compile pas

    error: within this context 'QThread' is not an accessible base of 'MyPort'

    Merci de votre aide

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    La tu n'as pas compris....
    as tu regardé un peu cette exemple
    http://qt.developpez.com/doc/latest/...andelbrot.html

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    As tu réussi ce que tu voulais faire??

Discussions similaires

  1. application multi taches
    Par tiagocerqueira dans le forum Qt
    Réponses: 1
    Dernier message: 26/05/2010, 10h05
  2. Temps réel, multi tache, synchronistation
    Par Invité dans le forum Ada
    Réponses: 8
    Dernier message: 07/09/2009, 19h20
  3. Calcul parallèles et multi taches !
    Par Darktrouble dans le forum Débuter
    Réponses: 1
    Dernier message: 03/03/2008, 15h29
  4. [Conception] Eviter les multi pages
    Par thephpman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/04/2007, 00h16
  5. [Thread]multi-tache
    Par nick1000 dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 14/06/2005, 09h10

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