2017-07-03 5 views
0

Je lance un Rpi W (Rbian Jessie), comme un système de compte à rebours avec le script suivant qui permet de prendre des photos toutes les minutes et de dormir quand un bouton est éteint. Le programme vérifie le bouton toutes les 5 secondes.python - Comment sauter le processus os.system()

# 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) 

Je suis sûr que le script est une abomination ...

Mais que je veux faire est: appeler un autre script nommé log.py (moniteur T ° et le temps/min). Cependant, le script principal s'arrête après la ligne: # os.system ('sudo python /home/pi/log.py') ... Le script fonctionne bien sans cette ligne.

Quelqu'un peut-il en savoir quelque chose?

+0

Pouvez-vous fournir le code de 'log.py'? – MLavrentyev

+0

Essayez de créer un script Python qui appelle simplement 'os.system ('sudo python /home/pi/log.py')' - vous aurez plus de facilité à le déboguer. – dimo414

+0

Et par "* le script principal s'arrête *" que voulez-vous dire? Est-ce que ça plante? Pendaison? Y a-t-il une sortie d'erreur? Le script 'log.py' est-il en cours d'exécution (lance' ps aux' pour voir tous les programmes en cours)? – dimo414

Répondre

0

Utilisation:

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

Les & fourches du processus.

+0

Génial, merci beaucoup ça marche, je ne connaissais pas ce conseil! – Pimyside