diff --git a/app.py b/app.py index 4fd71e7..ea2d058 100644 --- a/app.py +++ b/app.py @@ -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) - 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)) + if codes and not (set(codes) & set(last_codes)): + print(codes) + trash_category = None + 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('/')