rewrote web app with threading indication_driver

This commit is contained in:
paul-loedige 2023-01-19 05:10:05 +00:00
parent 5197c767b0
commit b61d514910

20
app.py
View File

@ -1,5 +1,4 @@
from flask import Flask, render_template, Response
import asyncio
from indication_driver import IndicationDriver
from camera_driver import CameraDriver
@ -13,18 +12,21 @@ camera_driver = CameraDriver()
def stream():
global indication_driver
global camera_driver
indication_task = None
last_codes = []
while True:
jpg, codes = camera_driver.get_decoded_frame(400, 800)
if codes and not (set(codes) & set(last_codes)):
print(codes)
trash_category = None
if codes:
if indication_task is not None:
indication_driver.stop_loop()
if codes[0] in config.BARCODE_LOOKUP_TABLE.keys():
trash_category = config.BARCODE_LOOKUP_TABLE[codes[0]]
indication_task = asyncio.create_task(indication_driver.indicate_async(trash_category))
known_code = None
for code in codes:
known_code = code if code in config.BARCODE_LOOKUP_TABLE.keys() else known_code
if known_code:
trash_category = config.BARCODE_LOOKUP_TABLE[known_code]
indication_driver.indicate(trash_category)
else:
indication_driver.stop_loop()
indication_driver.stop()
last_codes = codes
yield b'--frame\r\nContent-Type: image/jpeg\r\n\r\n' + jpg + b'\r\n\r\n'
@app.route('/')