threaded api, parallel to matrix

This commit is contained in:
waltem01 2023-11-23 08:49:47 +01:00
parent cb26cc6b0a
commit e7e02b73b0

View File

@ -3,42 +3,47 @@ from deps.samplebase import SampleBase
from rgbmatrix import graphics
from flask import Flask, jsonify
import time
from waitress import serve
import time, threading
app = Flask(__name__)
display_text = ""
count = 0
@app.route('/api/test', methods=['GET'])
def get_data():
app.matrix.text = f"Test #{++count}"
data = {"success": True}
global display_text, count
count = count + 1
display_text = f"Test #{count}"
data = {"success": True, "count": count, "text": display_text}
return jsonify(data)
class Text(SampleBase):
def __init__(self, *args, **kwargs):
super(Text, self).__init__(*args, **kwargs)
self.text = ""
def run(self):
offscreen_canvas = self.matrix.CreateFrameCanvas()
font = graphics.Font()
font.LoadFont("deps/fonts/9x18B.bdf")
text_color = graphics.Color(255, 255, 255)
self.font = graphics.Font()
self.font.LoadFont("deps/fonts/9x18B.bdf")
self.color = graphics.Color(255, 255, 255)
self.canvas = self.matrix.CreateFrameCanvas()
while True:
offscreen_canvas.Clear()
graphics.DrawText(offscreen_canvas, font, 0, 18, text_color, self.text)
offscreen_canvas = self.matrix.SwapOnVSync(offscreen_canvas)
self.update()
time.sleep(.05)
time.sleep(0.05)
def update(self):
self.canvas.Clear()
graphics.DrawText(self.canvas, self.font, 0, 18, self.color, display_text)
self.canvas = self.matrix.SwapOnVSync(self.canvas)
if __name__ == "__main__":
app.matrix = Text()
app.run(debug=True)
text = Text()
threading.Thread(target=lambda: serve(app, host="0.0.0.0", port=8080)).start()
if not app.matrix.process():
app.matrix.print_help()
if not text.process():
text.print_help()