Now it works!

This commit is contained in:
Andrea Mistrali 2023-05-01 12:23:55 +02:00
parent 945e816b17
commit f9cf01dfcb
No known key found for this signature in database
GPG Key ID: 6FB0A77F6D5DA9B2
3 changed files with 22 additions and 66 deletions

View File

@ -2,7 +2,6 @@ import logging
import sys import sys
import time import time
import threading import threading
from dataclasses import dataclass
from queue import Queue from queue import Queue
@ -148,36 +147,12 @@ class ledPulse:
self.worker.start() self.worker.start()
def stop(self): def stop(self):
self.worker.stop() self.queue.put(([], [], []))
self.worker.join() self.worker.join()
if self.supported: if self.supported:
self.pwm.stop() self.pwm.stop()
self.worker = None self.worker = None
def loop(self):
while True:
item = self.queue.get()
# Initial loop
self.log.debug('running initial steps')
for value, delay in item[0]:
self.setValue(value)
time.sleep(delay)
self.log.debug('running main loop')
while True:
for value, delay in item[1]:
self.setValue(value)
time.sleep(delay)
if not self.queue.empty()
break
self.log.debug('running final steps')
for value, delay in item[2]:
self.setValue(value)
time.sleep(delay)
### ###
# PLUGINS METHODS # PLUGINS METHODS

View File

@ -1,5 +1,6 @@
import logging import logging
import threading import threading
import time
class ledWorker(threading.Thread): class ledWorker(threading.Thread):
@ -18,49 +19,28 @@ class ledWorker(threading.Thread):
self.stop_event = threading.Event() self.stop_event = threading.Event()
def run(self): def run(self):
while True: while True:
item = self.parent.queue.get() item = self.parent.queue.get()
# Empty item, we exit
if item == ([], [], []):
break
# Initial # Initial loop
if self.initialMode: self.log.debug('running initial steps')
self.log.debug('running initial step') for value, delay in item[0]:
vals = self.initialValues() self.parent.setValue(value)
for value, delay in vals: time.sleep(delay)
self.setValue(value)
time.sleep(delay)
print('end initial step')
self.log.debug('end initial step')
vals = self.cycleValues() self.log.debug('running main loop')
while True: while True:
if self.worker.stop_event.is_set(): for value, delay in item[1]:
# self.worker._started.clear() self.parent.setValue(value)
self.worker.stop_event.clear() time.sleep(delay)
self.log.debug("bailing out from infinite loop") if not self.parent.queue.empty():
return
if self.worker.changed.is_set():
self.changed.clear()
self.log.debug("parameters changed, recalculate values...")
break break
for step in range(len(vals)):
value, delay = vals[step]
self.setValue(value)
time.sleep(delay)
# Final self.log.debug('running final steps')
if self.finalMode: for value, delay in item[2]:
print('running final step') self.setValue(value)
self.log.debug('running final step') time.sleep(delay)
vals = self.finalValues()
for value, delay in vals:
self.setValue(value)
time.sleep(delay)
print('end final step')
self.log.debug('end final step')
self.log.debug(f"running {self.name} main loop...")
self.parent.loop()
def stop(self):
self.stop_event.set()
self.log.debug(f"stopping {self.name}...")

View File

@ -7,4 +7,5 @@ log = logging.getLogger()
log.setLevel('DEBUG') log.setLevel('DEBUG')
led = pulses.ledPulse(12) led = pulses.ledPulse(12)
led.set(delay=1/100, valueMode="sin", max=20) led.start()
# led.set(delay=1/100, valueMode="sin", max=20)