Так что в основном я пытаюсь построить светодиодный проект с малиной пи ноль ш.Я получил скрипты led python, работающие внутри моего веб-проекта.Но я хотел бы иметь возможность изменять шаблоны на светодиодных лентах одним нажатием кнопки на веб-странице, которая генерируется пи.В настоящее время я использую колбу для запуска веб-сервера и отправки обновлений на него.Я также использую execnet для запуска методов паттерна из файла python 2, поскольку библиотека NeoPixel есть только в python 2, а не 3.
from flask import Flask, render_template, request
import execnet
CURRENT_PATTERN = "No Pattern Running"
app = Flask(__name__)
def callPython2(Version, Module, Function, Args):
gw = execnet.makegateway("popen//python=python%s" % Version)
channel = gw.remote_exec("""
from %s import %s as the_function
channel.send(the_function(*channel.receive()))
""" % (Module, Function))
channel.send(Args)
@app.route("/")
def index():
CURRENT_PATTERN = 'BootUp'
callPython2("2.7", "lakeboot", "startUp", "")
templateData = {
'title' : 'LED Pattern Status',
'pattern' : CURRENT_PATTERN,
}
return render_templates("index.html', **templateData)
@app.route("/<patternName>/<action>")
def action(patternName, action):
if action == 'stop':
CURRENT_PATTERN = 'No Pattern Running"
callPython2("2.7", "lakeboot", "turnOff", "")
if patternName == 'TheaterChase':
CURRENT_PATTERN = 'Theater Chase'
callPython2("2.7", "lakeboot", "runTheater", "")
#More Pattern calls like above
templateData = {
'title' : "LED Pattern Status',
'pattern' : CURRENT_PATTERN,
}
return render_template('index.html', **templateData)`
Вот так выглядит мой файл webPage.py.Смена шаблона вызывает работу, но затем он выполняет только одну итерацию выбранного шаблона, но я бы хотел, чтобы он зациклился до тех пор, пока не будет сказано, чтобы остановиться или выбрать новый шаблон.
PS Извините, если формат плохой. Никогда не публиковался здесь раньше, а также работал с python только несколько месяцев.
РЕДАКТИРОВАТЬ: Вот index.html
<!DOCTYPE html>
<head>
<title>LED Status</title>
<link rel="stylesheet" href='../static/style.css'/>
</head>
<body>
<h2> Status </h2>
<h3> Current Pattern ==> {{ pattern }}</h3>
<br>
<h2> Commands </h2>
<h3>
Run Bootup ==>
<a href="/bootup/start" class="button">TURN ON</a>
<a href="/bootup/stop" class="button">TURN OFF</a>
</h3>
<h3>
Run Theater Chase ==>
<a href="/TheaterChase/start" class="button">TURN ON</a>
<a href="/TheaterChase/stop"class="button">TURN OFF</a>
</h3>
<h3>
Run Pattern Three ==>
<a href="/ledGrn/start" class="button">TURN ON</a>
</h3>
</body>
</html>