尝试按下按钮循环完成作业

时间:2016-04-22 04:32:28

标签: python raspberry-pi raspberry-pi2 raspberry-pi3

请原谅初学者的问题。我2周前才听说过Python这个词。

我正在尝试编写一个python 2.7脚本,它有两个在AM和PM中运行的作业。这是一个提醒程序,每天早上9点和晚上9点提醒我。它在那之后每小时都会提醒我。我想尝试找出GPIO按钮按下将停止当前作业的方式,但允许下一个预定作业发生。这个想法是这两个工作每天都在运行,但按下按钮说,"停止这份工作并等待下一个预定的工作"。一旦我按照提醒的那样做了什么"提醒我",按下按钮就会停止唠叨。

以下是我开始写的基本代码:

#!/usr/bin/python  
import schedule  
import time  
import RPi.GPIO as GPIO  
GPIO.setmode(GPIO.BCM)  

# GPIO 23 set up as input. It is pulled up to stop false signals  
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)  

def am_job():  
    print 'This is the AM job'  

def pm_job():  
    print 'This is the PM job'  

schedule.every().day.at("9:00").do(am_job)
schedule.every().day.at("10:00").do(am_job)
schedule.every().day.at("11:00").do(am_job)
schedule.every().day.at("12:00").do(am_job)
schedule.every().day.at("13:00").do(am_job)

schedule.every().day.at("21:00").do(pm_job)
schedule.every().day.at("22:00").do(pm_job)
schedule.every().day.at("23:00").do(pm_job)


# I need to figure out a way that this button press cancels the current job
# but allows the next job to continue.
# Over and over each am and pm
GPIO.add_event_detect(23, GPIO.FALLING, callback="some job name here", bouncetime=400)

try:
   while True: # This currently just cycles through all the jobs
       schedule.run_pending()
       time.sleep(1)

except KeyboardInterrupt:  
GPIO.cleanup()

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我终于认定上述问题不起作用。相反,我制作了两个不同的Python脚本(上午和下午)。然后,我安排了每个人与Cron。在每个脚本中,我编写了一个退出脚本的按钮按下中断。这很好用