2014-05-21 69 views
0

這是我打開類,關閉,並閃爍LED在樹莓派 我想停止線閃爍在一段時間... 但線程後臺不會運行...蟒蛇線程不會啓動後臺

class LED:

_GPIOPORT=None 
flagstop=0 
flag=threading.Event() 


def __init__(self,GPIONUM): 
    self._GPIOPORT=GPIONUM 
    GPIO.setmode(GPIO.BOARD) 
    GPIO.setwarnings(False) 
    GPIO.setup(self._GPIOPORT, GPIO.OUT) 
    self.flag.set() 


def TurnOn(self): 
    self.flag.clear() 
    print 'Turn On ...' 
    GPIO.output(self._GPIOPORT,True) 

def TurnOff(self): 
    self.flag.clear() 
    print 'Turn Off ...' 
    GPIO.output(self._GPIOPORT,False) 

def Blink(self,delay,e): 
    print 'Thread Blink Create ...' 
    t1=threading.Thread(self.BlinkThread(delay,e)) 
    t1.start() 
    print 'Thread Started' 

def BlinkThread(self,delaytime,event): 
    print 'BlinkTrehad Start ....' 
    while not event: 
     GPIO.output(self._GPIOPORT,False) 
     sleep(delaytime) 
     GPIO.output(self._GPIOPORT,True) 
     sleep(delaytime) 

,這是我使用的模塊,這個類:

import LED 
from time import sleep 
import threading 

    if __name__ == '__main__': 
     e=threading.Event() 
     e.set() 
     ledblue=LED.LED(11) 
     ledblue.TurnOn() 
     sleep(1) 
     ledblue.Blink(1,e) 
     ledblue.TurnOn() 

從來沒有「開始線程」在康索爾和循環運行打印排隊

回答

0

要調用線程構造函數中的BlinkThread(),而不僅僅是傳遞函數引用和參數,並讓線程啓動函數。將其更改爲:

def Blink(self,delay,e): 
    print 'Thread Blink Create ...' 
    t1=threading.Thread(target=self.BlinkThread, args=(delay,e)) 
    t1.start() 
    print 'Thread Started' 
+0

,但給我這個錯誤 文件「/usr/lib/python2.7/threading.py」,管道438,__init__ 斷言組是無,「組參數必須是無,現在「 AssertionError:組參數現在必須爲None – user3585139

+0

oops,我的不好。應該是目標= ...,我會修復 – tdelaney