2017-12-13 29 views
0

Raspberry Pi 3のピン23にGPIOボタンが設定されています。このボタンを押すと別のpythonスクリプトを実行することができます。最初のプログラムを実行すると、 "Button Pressed"が表示されますが、2番目のプログラムは実行されません。 (私はプログラムで許可が設定されていることを確認しました。)ご協力いただきありがとうございます!GPIOボタンを押してPython 3プログラムを実行

#!/usr/bin/env python 
    import RPi.GPIO as GPIO 
    import time 
    import subprocess 

    GPIO.setmode(GPIO.BCM) 
    GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

    while True: 
     input_state = GPIO.input(23) 
     if input_state == False: 
      print('Button Pressed') 
      subprocess.call('/home/pi/Downloads/PuttingItAllTogether.py', shell=True) 
      time.sleep(0.2) 
+0

それはそれはあなたのスクリプトを実行されるべき「押されたボタン」を印刷しています場合。 '/ home/pi/Downloads/PuttingItAllTogether.py'スクリプトが出力を生成することは確実ですか?あなたはスクリプトの終了ステータスをチェックしましたか(これは 'subprocess.call'の戻り値です)? – larsks

+0

助けてくれてありがとう@larsks。私はプログラミングに非常に新しいです。スクリプトの終了ステータスを確認するにはどうすればよいですか?私はPythonから/home/pi/Downloads/PuttingItAllTogether.pyを直接実行することができます。私は心からあなたの助けに感謝します。 –

+0

私が言ったように、それは 'subprocess.call'への呼び出しの戻り値です。これを変数に保存し、 'returnval = subprocess.call(...)'の後に 'print'文のように出力します。 – larsks

答えて

0

ライブラリ「os」を使用して「システム」を使用できませんか?

#!/usr/bin/env python 
import RPi.GPIO as GPIO 
import time 
import os 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    input_state = GPIO.input(23) 
    if input_state == False: 
     print('Button Pressed') 
     os.system('/home/pi/Downloads/PuttingItAllTogether.py') 
     time.sleep(0.2) 

用法構文:

import os 
os.system('shell command to execute')