我被卡在/ sys /中,其中包含我的諾基亞N900手機上的環境光線傳感器的強度中的光強度。如何輪詢/ sys中的文件
See thread on talk.maemo.org here
我試圖用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:
Mmmh,所有我想出了無需線索,如果有一個特殊的機制如下:
f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
value = f.read()
print value
f.seek(0)
這裹在自己的線程,可以訣竅,但沒有人有更聰明,更少的CPU佔用和更快的方式來獲得最新的價值?