关闭后,Python脚本无法再次正常启动

时间:2018-05-23 19:46:09

标签: php python html apache raspberry-pi

我正在尝试建立一个可以通过网站控制自己的机器人 我编写了一个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脚本中那样设置了所有的Pins并在之后立即清理它们。

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 :(得分:0)

由于您似乎没有看到错误,我会尝试这样做。可能是您的代码没有进入清理阶段。

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