2016-02-27 5 views
1

J'essaie d'écrire un programme qui détecte si j'ai branché ou débranché mes écouteurs et effectue donc certaines actions. J'utilise Ubuntu 14.04 et grâce à un peu de recherche, j'ai découvert que l'état de connexion écouteur/casque est écrit dans un fichier codec à ce chemin -/proc/asound/card0. Le fichier spécifique contenant les informations d'état est le codeC# 0.txt.Watchdog - l'événement on_modified ne se déclenche pas lors du changement de fichier de codec

J'ai écrit un programme Python en utilisant la bibliothèque Watchdog et essayé de comparer cette sortie de fichier codeC# 0 à un état initial de unplugged.txt. Selon que les fichiers correspondent, je veux lancer un lecteur de musique.

Maintenant le code est le suivant; Je n'arrive pas à comprendre pourquoi l'événement on_modified ne se déclenche pas chaque fois que je connecte/déconnecte mes écouteurs de la prise. J'ai vu que la date de modification pour tous les fichiers dans le chemin mentionné ci-dessus change mais mon programme n'imprime pas un message.

code:

import time 
import os 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 
import filecmp 

unpluggedStateFile = 'unplugged.txt' 


class HeadsetPluginHandler(FileSystemEventHandler): 
    def on_modified(self, event): 
     print 'File changed.' 
     # os.system('cat /proc/asound/card0/codec#0 > pluggedIn.txt') 
     # print filecmp.cmp(unpluggedStateFile, 'pluggedIn.txt') 


if __name__== "__main__": 
    event_handler = HeadsetPluginHandler() 
    observer = Observer() 
    observer.schedule(event_handler, path='/proc/asound/card0',  recursive=False) 
    observer.start() 


    try: 
     while True: 
      time.sleep(1) 
    except KeyboardInterrupt: 
     observer.stop() 
     print 'stopped' 
    observer.join() 

Répondre

0

Je crois que cela ne fonctionne pas parce que chien de garde ne peut pas surveiller les fichiers système pour les changements. Je ne suis pas sûr que ce soit 100% correct, mais c'est ce que j'ai obtenu en demandant autour de IRC, Reddit, etc.