Я застрял, читая файл в / sys /, который содержит интенсивность освещения в люксах датчика внешней освещенности на моем телефоне Nokia N900.
Смотрите тему на talk.maemo.org здесь
Я пытался использовать pyinotify для опроса файла, но это выглядит как-то неправильно для меня, так как файл всегда "process_IN_OPEN", "process_IN_ACCESS" и "process_IN_CLOSE_NOWRITE"
Я хочу получить изменения как можно скорее, и если что-то изменилось, вызвать событие, выполнить класс ...
Вот код, который я пробовал, который работает, но не так, как я ожидал (я надеялся, что будет запущен process_IN_MODIFY):
#!/usr/bin/env python
import os, time, pyinotify
import pyinotify
ambient_sensor = '/sys/class/i2c-adapter/i2c-2/2-0029/lux'
wm = pyinotify.WatchManager() # Watch Manager
mask = pyinotify.ALL_EVENTS
def action(self, the_event):
value = open(the_event.pathname, 'r').read().strip()
return value
class EventHandler(pyinotify.ProcessEvent):
...
def process_IN_MODIFY(self, event):
print "MODIFY event:", action(self, event)
...
#log.setLevel(10)
notifier = pyinotify.ThreadedNotifier(wm, EventHandler())
notifier.start()
wdd = wm.add_watch(ambient_sensor, mask)
wdd
time.sleep(5)
notifier.stop()
Обновление 1:
М-м-м-м, все, что я придумал, не имея понятия, есть ли специальный механизм, таково:
f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
value = f.read()
print value
f.seek(0)
Это, завернутый в собственный поток, может сработать, но есть ли у кого-нибудь более умный, менее загруженный ЦП и более быстрый способ получить последнее значение?