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

Bibliothèques tierces Python Discussion :

problème avec fonction gobject.timeout_add


Sujet :

Bibliothèques tierces Python

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut problème avec fonction gobject.timeout_add
    Bonjour à tous!

    Je viens de démarrer un projet concernant la création d'une interface graphique pour commniquer avec une machine.
    Cette communication est réalisé via un protocole RS232
    Pour vérifier que la machine est bien connectée à l'ordinateur je luis envoi un ping toutes les secondes avec la fonction gobject.timeout_add
    Le seul hic c'est que je suis obligé de mettre un return True dans une condition car si je le met tout le temps, lorsque la machine est déconnectée ça ne marche pas: ça n'affiche pas que le machine est déconnecté et ça freeze!!!
    Alors qu'avec le code écrit comme ci dessous ça me détecte la déconnexion et ça ne plante pas...

    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
         def mping(self):
              ret=self.serial.send("?")
              link = ret
              if(link!=""):
                  buff="Connecte"
              else
                  buff="Deconnecte"
              self.connection_label.set_text(buff)
              self.connection_label.show()
              if(buff=="Connecte"):
                  return True
        .
        . autres def
        .
     
        puis dans mon def __init__:
     
        self.connection_label =gtk.Label("")
        self.table.attach(self.connection_label, 3, 4, 6, 7) # c'est placé dans un tableau
        self.connection_label.show()
        self.source_id = gobject.timeout_add(1000, self.mping)
    Cependant ça ne détecte pas la reconnexion car mping a du retourner false lors de la déconnexion du coup gobject.timeout_add ne relance pu mping toutes les secondes...

    Alors quelqu'un saurait -il comment on peut continuer a pinger toutes les secondes durant que la machine est déconnecté sans que ça plante?

    D'avance Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Normal que ça marche pas : tu n'utilises pas les callbacks gtk correctement.

    La valeur de retour des callbacks gtk ne sont pas pour toi (d'ailleurs, tu ne peux pas la récupérer), ils servent juste pour signaler à GTK si il doit conserver ton callback dans la boucle d'évenements. Si tu renvoies false, le callback est retiré, c'est normal, c'est même expliqué dans la doc : https://developer.gnome.org/pygobjec...b--timeout-add

    Il faut que tu récupère toi même ton résultat, (par exemple passer un argument que tu vas mettre à jour, mettre la fonction dans un object, updater une blobal (solution simple mais sale).

    Voila, au boulot.

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 20h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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