打开10 scs长的python风扇

时间:2018-11-25 07:20:56

标签: python python-3.x python-2.7 gpio

这是我的代码,打开风扇,我在单独的线程上运行睡眠,因为它使整个脚本进入睡眠状态

def fan_on():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    FAN_PIN = 23
    GPIO.setup(FAN_PIN,GPIO.OUT)
    GPIO.output(FAN_PIN,True)
    t = Thread(target=sleep_fan)
    t.deamon = True
    t.start()

def sleep_fan():
    time.sleep(10)

脚本正在运行,但是我没有得到10 scs,只有1或2秒?如何解决这个问题? TIA

2 个答案:

答案 0 :(得分:1)

我将假设您的程序在10秒结束之前就死了,这是杀死风扇的原因。 daemont.deamon = True的拼写错误在这里无关紧要。

在主函数中加入该线程可能更好。

def fan_on():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    FAN_PIN = 23
    GPIO.setup(FAN_PIN,GPIO.OUT)
    GPIO.output(FAN_PIN,True)
    t = Thread(target=sleep_fan)
    t.deamon = True
    t.start()
    return t

fan_thread = fan_on()
fan_thread.join()  # waits for thread to exit before moving on.

答案 1 :(得分:-1)

正如亚当·史密斯(Adam Smith)所说,问题是由于新线程在创建后几乎立即死亡,而不是因为守护进程。因此,您应该使用join方法。