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 time
import threading
from dataclasses import dataclass
from queue import Queue
@ -148,36 +147,12 @@ class ledPulse:
self.worker.start()
def stop(self):
self.worker.stop()
self.queue.put(([], [], []))
self.worker.join()
if self.supported:
self.pwm.stop()
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

View File

@ -1,5 +1,6 @@
import logging
import threading
import time
class ledWorker(threading.Thread):
@ -18,49 +19,28 @@ class ledWorker(threading.Thread):
self.stop_event = threading.Event()
def run(self):
while True:
item = self.parent.queue.get()
# Initial
if self.initialMode:
self.log.debug('running initial step')
vals = self.initialValues()
for value, delay in vals:
self.setValue(value)
time.sleep(delay)
print('end initial step')
self.log.debug('end initial step')
vals = self.cycleValues()
while True:
if self.worker.stop_event.is_set():
# self.worker._started.clear()
self.worker.stop_event.clear()
self.log.debug("bailing out from infinite loop")
return
if self.worker.changed.is_set():
self.changed.clear()
self.log.debug("parameters changed, recalculate values...")
# Empty item, we exit
if item == ([], [], []):
break
for step in range(len(vals)):
value, delay = vals[step]
self.setValue(value)
# Initial loop
self.log.debug('running initial steps')
for value, delay in item[0]:
self.parent.setValue(value)
time.sleep(delay)
# Final
if self.finalMode:
print('running final step')
self.log.debug('running final step')
vals = self.finalValues()
for value, delay in vals:
self.log.debug('running main loop')
while True:
for value, delay in item[1]:
self.parent.setValue(value)
time.sleep(delay)
if not self.parent.queue.empty():
break
self.log.debug('running final steps')
for value, delay in item[2]:
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')
led = pulses.ledPulse(12)
led.set(delay=1/100, valueMode="sin", max=20)
led.start()
# led.set(delay=1/100, valueMode="sin", max=20)