-2

初歩的な質問をお許しください。Python という言葉を聞いたのは 2 週間前のことです。

AM と PM で実行される 2 つのジョブを持つ python 2.7 スクリプトを作成しようとしています。これは、毎日午前 9 時と午後 9 時に思い出させるリマインダー プログラムです。その後も1時間ごとに思い出させてくれます。GPIO ボタンを押して現在のジョブを停止し、次のスケジュールされたジョブを実行できるようにする方法を見つけたいと考えています。この 2 つのジョブは毎日実行されますが、ボタンを押すと、「このジョブを停止して、次のスケジュールされたジョブを待ちます」と表示されます。リマインダーが「私に思い出させた」ことをしたら、ボタンを押すとしつこいことが止まります。

ここに私が書き始めた基本的なコードがあります:

#!/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()

助けてくれてありがとう!

4

1 に答える 1

0

最終的に、上記の質問はうまくいかないと判断しました。代わりに、2 つの異なる Python スクリプト (am と pm) を作成しました。次に、それぞれをCronでスケジュールしました。各スクリプトで、スクリプトを終了するボタン押下割り込みをプログラムしました。これはうまくいきます

于 2016-05-02T20:48:12.557 に答える