2017-07-03 5 views
0

Ich betreibe eine Rpi W (Rbian Jessie), wie ein Timelapse-Countdown-System mit dem folgenden Skript, mit dem Bild jede Minute und Schlaf, wenn eine Schaltfläche ausgeschaltet ist. Das Programm überprüft die Taste alle 5 Sekunden.python - Wie zu springen os.system() Prozess

# This Python file uses the following encoding: utf-8 

from time import sleep 
from picamera import PiCamera 
import os 
import time 
import RPi.GPIO as GPIO 
import picamera 
import datetime as dt 


GPIO.setmode(GPIO.BCM) 
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) 
os.system('sudo python /home/pi/log.py') 
check = GPIO.input(17) 

while check == 0: #si l'état initial du bouton = 0 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 

while check == 1: #si l'état initial = 1 

     with picamera.PiCamera() as camera: 
       camera.resolution = (1280, 720) 
       sleep(1) 
       t1 = dt.datetime.now().strftime('-%d_%m_%Y-%H_%M_%S') 
       t2 = 'IMG'+ t1 
       camera.capture('/home/pi/Pictures/%s.jpg' % t2) 
       print('Captured %s' % t2) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(5) 
     check = GPIO.input(17) 
     print(check) 
     sleep(4) 
     check = GPIO.input(17) 
     print(check) 


    while check == 0: #si l'état initial du bouton = 0 
      check = GPIO.input(17) 
      print(check) 
      sleep(5) 

Ich bin sicher, dass das Skript ist ein Greuel ...

Aber das ich tun möchte, ist: rufen Sie ein anderes Skript namens log.py (Monitor T ° und Zeit/min). Das Hauptskript stoppt jedoch nach der Zeile: # os.system ('sudo python /home/pi/log.py') ... Das Skript läuft ohne diese Zeile korrekt.

Kann jemand etwas darüber wissen?

+0

Können Sie den Code für 'log.py' angeben? – MLavrentyev

+0

Versuchen Sie, ein Python-Skript zu erstellen, das nur 'os.system ('sudo python /home/pi/log.py')' aufruft - Sie werden es leichter haben, das zu debuggen. – dimo414

+0

Und mit "* das Hauptskript stoppt *" was meinst du? Stürzt es ab? Hängend? Gibt es eine Fehlerausgabe? Ist das 'log.py'-Skript ausgeführt (Ausführen von' ps aux', um alle laufenden Programme zu sehen)? – dimo414

Antwort

0

Verwendung:

os.system('sudo python /home/pi/log.py &') 

Die & Gabeln der Prozess.

+0

Super, vielen Dank, es funktioniert, ich kannte diesen Tipp nicht! – Pimyside

Verwandte Themen