为什么Flask Server需要在运行电机后重新启动?



我是树莓派和Python的新手。我想为我的树莓派小项目开发一个Flask和Python web服务器。我已经开发了Flask和Python服务器来驱动ESC(电子速度控制)无刷电机,但我有一个关于Flask的问题。

对于GPIO控制,我使用Rpi。GPIO图书馆。

问题是,当我点击电机/打开链接,它运行电机,当点击电机/关闭链接,电机关闭。现在如果我再次点击电机/打开除非我重新启动我的Flask应用程序,否则它不会运行电机。重新启动Flask应用程序后(app.py)文件,然后电机/on链接正常工作,我不知道为什么会这样。我希望我讲清楚了。

这是我的Flask app.py代码。

from flask import Flask, render_template, request
from flask import make_response
from flask_cors import CORS
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
app = Flask(__name__)
CORS(app)
GPIO.setwarnings(False)
import time
motor = 12
GPIO.setup(motor, GPIO.OUT)
p = GPIO.PWM(motor, 50)

@app.route("/<deviceName>/<action>")
def action(deviceName, action):

if deviceName == 'motor':
actuator = motor

if action == "on":
p.start(9)

if action == "off":
p.stop()

return make_response(action)

if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)

from flask import Flask, render_template, request
from flask import make_response
from flask_cors import CORS
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
app = Flask(__name__)
CORS(app)
GPIO.setwarnings(False)
import time
motor = 12
GPIO.setup(motor, GPIO.OUT)
p = GPIO.PWM(motor, 50)
p.start(0)       # EDIT

@app.route("/<deviceName>/<action>")
def action(deviceName, action):

if deviceName == 'motor':
actuator = motor

if action == "on":
p.ChangeDutyCycle(9)    # EDIT

if action == "off":
p.ChangeDutyCycle(0)    # EDIT

return make_response(action)

if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)

可以将p.stop()放在程序末尾的任何位置。

最新更新