我想使用LED在Raspberry PI上顯示狀態。要做到這一點,我有一個Python程序,將使用線程在後臺運行類方法。在Python中運行不同的線程
這是我寫的代碼:該程序涉及到這一行os.system("echo gpio | sudo tee /sys/class/leds/led0/trigger")
#!/usr/bin/python
import time
import os
import threading
status = 0
class LEDStatus(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global status
self.current_value = None
self.running = True
def run(self):
global status
os.system("echo gpio | sudo tee /sys/class/leds/led0/trigger")
while True:
for i in xrange(0, status):
os.system("echo 1 | sudo tee /sys/class/leds/led0/brightness")
time.sleep(0.25)
os.system("echo 0 | sudo tee /sys/class/leds/led0/brightness")
time.sleep(0.25)
time.sleep(2)
os.system("echo mmc0 | sudo tee /sys/class/leds/led0/trigger")
if __name__ == '__main__':
leds = LEDStatus()
try:
leds.status = 3
leds.start()
while True:
print "X"
time.sleep(2)
except (KeyboardInterrupt, SystemExit): #Al pulsar ctrl+c
print "\nFinish"
leds.running = False
leds.join()
後,不執行在run
方法什麼。
我在做什麼錯?我怎樣才能從主方法中更改狀態變量的值?
您試圖在'os.system'呼叫使用sudo,須藤等待管理員密碼輸入,但它可以」因爲它沒有管道來接收它。 –
取決於sudo配置,NOPASSWD可能正在發揮作用。或不。它聽起來像是sudo。 –
我不認爲這是問題,我已經在一個主線程中測試過這些行,它工作正常 – ozat