|
@@ -109,10 +109,16 @@ clock = CLOCK()
|
|
|
thread.start_new_thread(clock.loop,())
|
|
|
|
|
|
class Fade():
|
|
|
- def __init__(self,start,target,time,clock):
|
|
|
+ def __init__(self,start,target,time,clock,delay=0):
|
|
|
#print("init Fade ",start,target,time,clock)
|
|
|
- self.__clock = clock
|
|
|
- self.__clock_curr = clock
|
|
|
+ if delay < 0:
|
|
|
+ delay = 0
|
|
|
+ if time <= 0:
|
|
|
+ time = 0.0001
|
|
|
+ clock += delay
|
|
|
+ self.__delay = delay
|
|
|
+ self.__clock = clock
|
|
|
+ self.__clock_curr = clock
|
|
|
self.__time = time
|
|
|
self.__start = start
|
|
|
self.__last = start
|
|
@@ -122,10 +128,10 @@ class Fade():
|
|
|
def __str__(self):
|
|
|
return self.__repr__()
|
|
|
def __repr__(self):
|
|
|
- return "<Fade Next:{:0.2f} Start:{:0.2f} Target:{:0.2f} Clock:{:0.2f} run:{}>".format(
|
|
|
- self.__last, self.__start,self.__target,self.__clock_curr,self.run )
|
|
|
+ return "<Fade Next:{:0.2f} Start:{:0.2f} Target:{:0.2f} T{:0.2f} Clock:{:0.2f} run:{} delay:{:0.2f}>".format(
|
|
|
+ self.__last, self.__start,self.__target,self.__time,self.__clock_curr,self.run,self.__delay )
|
|
|
def next(self,clock=None):
|
|
|
- if self.__time <= 0:
|
|
|
+ if self.__time <= 0 and self.__delay <= 0:
|
|
|
self.__last = self.__target
|
|
|
self.run = 0
|
|
|
|
|
@@ -188,9 +194,9 @@ class DMXCH(object):
|
|
|
self._fade = None
|
|
|
self._fx = None
|
|
|
self._last_val = 0
|
|
|
- def fade(self,target,time=0,clock=0):
|
|
|
+ def fade(self,target,time=0,clock=0,delay=0):
|
|
|
if target != self._base_value:
|
|
|
- self._fade = Fade(self._base_value,target,time=time,clock=clock)
|
|
|
+ self._fade = Fade(self._base_value,target,time=time,clock=clock,delay=delay)
|
|
|
def fx(self,xtype="sinus",size=40,speed=40,offset=0,clock=0):
|
|
|
if xtype.lower() == "off":
|
|
|
#self._fx = Fade(self._fx_value,target=0,time=2,clock=clock)
|
|
@@ -235,22 +241,30 @@ def CB(data):
|
|
|
|
|
|
cmds = split_cmd(data)
|
|
|
c = clock.time()
|
|
|
+ time = 2
|
|
|
+ delay = 0
|
|
|
+
|
|
|
for xcmd in cmds:
|
|
|
if xcmd.startswith("d"):
|
|
|
xxcmd=xcmd[1:].split(":")
|
|
|
#print("DMX:",xxcmd)
|
|
|
l = xxcmd
|
|
|
- t = 2
|
|
|
try:
|
|
|
k=int(l[0])-1
|
|
|
v=float(l[1])
|
|
|
if len(l) >= 3:
|
|
|
- t=float(l[2])
|
|
|
+ time=float(l[2])
|
|
|
if v > 255:
|
|
|
v = 255
|
|
|
+ if len(l) >= 3:
|
|
|
+ try:time=float(l[2])
|
|
|
+ except:pass
|
|
|
+ if len(l) >= 4:
|
|
|
+ try:delay=float(l[3])
|
|
|
+ except:pass
|
|
|
|
|
|
if len(Bdmx) > k:
|
|
|
- Bdmx[k].fade(target=v,time=t, clock=c)
|
|
|
+ Bdmx[k].fade(target=v,time=time, clock=c,delay=delay)
|
|
|
except Exception as e:
|
|
|
print("EXCEPTION IN FADE",e)
|
|
|
print("Error on line {}".format(sys.exc_info()[-1].tb_lineno))
|
|
@@ -261,7 +275,6 @@ def CB(data):
|
|
|
for i in Bdmx:
|
|
|
i.fx(xtype="off",clock=c)
|
|
|
l = xxcmd
|
|
|
- t = 2
|
|
|
try:
|
|
|
xtype=""
|
|
|
size=40
|