2009-10-07 5 views
0

Je souhaite détecter l'activation du bouton «snapshot» sur le dessus d'une webcam sous Linux. Le bouton a cette entrée dans/dev: /dev/input/by-id/usb-PixArt_Imaging_Inc._USB2.0_UVC_VGA-event-if00Utilisation de la fonction de rappel dans pyevent

J'utilise l'emballage « rel », en ce moment, car il gère exceptions mieux. Avant que le code suivant ne soit exécuté, self.s.cam_btn est affecté à l'entrée/dev du bouton.

rel.override() 
    rel.init() 
    rel.read(self.s.cam_btn, self.snap) 
    rel.dispatch() 

self.snap() est le rappel. Il capture une capture d'écran de mplayer et transmet l'image à un programme OCR. Tout fonctionne principalement jusqu'à ce que le rappel retourne. Voici le problème:

Si self.snap() ne renvoie rien, le programme s'arrête et ne traite plus aucun événement de bouton. Si self.snap() renvoie 1, le programme continue de traiter le même événement de bouton dans une boucle infinie, plutôt que d'attendre un nouvel événement. La documentation pour pyevent est un peu clairsemée donc toute aide reçue avec gratitude.

Clinton

Répondre

0

Jamais utilisé pyevent, mais essaieraient rééchelonnements l'événement à la fin du gestionnaire:

def snap(self): 
    # ... code ... 
    rel.read(self.s.cam_btn, self.snap) 
    return False 
Questions connexes