Сценарий Python не запускается снова правильно после его закрытия - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать робота, которым я могу управлять через веб-сайт.
Я написал скрипт Python, который позволяет роботу двигаться по (более или менее) прямой линии.Активация скрипта через сайт не была проблемой, но проблемы появляются, когда я пытаюсь остановить его и перезапустить.
Когда я нажимаю кнопку остановки, он делает это в php-файле:

exec("sh /home/pi/Maxwheel/ScriptePython/geradeaus/kill.sh");
exec("sudo python /home/pi/Maxwheel/ScriptePython/geradeaus/stopp.py");

kill.sh выполнит эту команду для уничтожения скрипта python:

sudo pkill -f vorne.py

stopp.py снова очистит контакты .Я уже делаю это в конце скрипта Python, но я испытал, когда просто убивал скрипт, робот все равно будет двигаться вперед.Я полагал, что убийство скрипта не вызовет GPIO.cleanup() в конце моего скрипта Python.Да, скрипт Python останавливается / уничтожается (проверяется с помощью ps aux | grep python)

Затем робот останавливается.Но когда я пытаюсь запустить скрипт снова через кнопку, робот не запускается должным образом.Он будет пытаться двигаться, но только на секунду, а затем останавливается.После этого я должен нажать его, и затем он будет двигаться снова, как секунду.Это не имеет смысла для меня, потому что скрипт Python находится в цикле, поэтому робот никогда не должен останавливаться.Даже когда я пытаюсь запустить скрипт вручную, он не будет работать.

Это код из "stopp.py".Я просто заново установил все контакты, как я делал это в скрипте Python, и сразу же очистил их.

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.cleanup()

1 Ответ

0 голосов
/ 24 мая 2018

Поскольку, возможно, вы не видите ошибку, я бы попробовал это.Возможно, ваш код не доходит до фазы очистки.

import RPi.GPIO as GPIO
try:
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(23, GPIO.OUT)
    GPIO.setup(24, GPIO.OUT)
    GPIO.setup(18, GPIO.OUT)
    GPIO.setup(13, GPIO.OUT)
    GPIO.setup(17, GPIO.OUT)
    GPIO.setup(27, GPIO.OUT)
    GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP)
except Exception as exc:
    print('Error : {}'.format(str(exc)))
finally:
    GPIO.cleanup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...