Pārlūkot izejas kodu

add: V-Master DMXCH ... no fade,no fx... !!!

micha 1 gadu atpakaļ
vecāks
revīzija
18cd597a02
4 mainītis faili ar 105 papildinājumiem un 47 dzēšanām
  1. 3 2
      _LibreLightDesk.py
  2. 99 43
      _console.py
  3. 1 0
      lib/zchat.py
  4. 2 2
      tkgui/GUI.py

+ 3 - 2
_LibreLightDesk.py

@@ -540,7 +540,7 @@ def jclient_send(data):
             #print(jdata)
             try:
                 dmx = int(jdata["DMX"])
-                if int(dmx) >= 1: # ignore DMX lower one
+                if 1: #:int(dmx) >= 1: # ignore DMX lower one
 
                     if "ATTR" not in jdata:
                         # for fx off
@@ -559,7 +559,8 @@ def jclient_send(data):
                             pass 
                         else:
                             jdatas.append(jdata)
-
+                    
+                    cprint("-- ",jdata,color="red")
                 else:
                     cprint("jclient_send, ignore DMX ",color="red")
                     cprint("-- ",jdata,color="red")

+ 99 - 43
_console.py

@@ -230,6 +230,7 @@ exec_size_master  = _MASTER("EXEC-SIZE")
 exec_speed_master = _MASTER("EXEC-SPEED")
 exec_offset_master = _MASTER("EXEC-OFFSET")
 
+
 size_master  = _MASTER("SIZE")
 speed_master = _MASTER("SPEED")
 
@@ -550,6 +551,9 @@ class DMXCH(object):
         self._dmx = dmx
         self._dmx_fine = 0
 
+        self._fix_id = 0 
+        self._v_master_id=0
+
         self._flash    = None
         self._flash_fx = None
         self._flash_fx_value = 0
@@ -637,6 +641,7 @@ class DMXCH(object):
         return out
     def _next(self,clock=0):
         value = self._base_value
+
         if self._last_val is None:
             self._last_val = value
         fx_value = self._fx_value
@@ -661,13 +666,20 @@ class DMXCH(object):
             fx_value = self._fx_value
 
         self._last_val = value + fx_value
+        #self._last_val *= v_master.val(self._fix_id)
+
+        if self._v_master_id in V_MASTER:
+            vm = V_MASTER[self._v_master_id].next(clock)
+            #print("V_MASTER is ", V_MASTER[self._v_master_id])
+            vm = vm/256
+            self._last_val *= vm # v_master.val(self._v_master_id)
 
         #out = self._last_val * htp_master.master_by_dmx(self._dmx)
         out = self._last_val
         return out
 
 
-
+V_MASTER = {} #DMXCH
 Bdmx = []
 for i in range(512*7+1):
     Bdmx.append( DMXCH(i) )
@@ -948,6 +960,43 @@ if __run_main:
     thread.start_new_thread(main.loop,())
 
 
+def _init_action(Bdmx,out,DMX):
+    if out[DMX]["fx"]:
+        x = out[DMX]["fx"]
+        Bdmx[DMX].fx(xtype=x["xtype"]
+                ,size=x["size"]
+                ,speed=x["speed"]
+                ,invert=x["invert"]
+                ,width=x["width"]
+                ,start=x["start"]
+                ,offset=x["offset"]
+                ,base=x["base"]
+                ,clock=x["clock"]
+                ,master=x["master"])
+    if out[DMX]["flash_fx"]:
+        x = out[DMX]["flash_fx"]
+        Bdmx[DMX].flash_fx(xtype=x["xtype"]
+                ,size=x["size"]
+                ,speed=x["speed"]
+                ,invert=x["invert"]
+                ,width=x["width"]
+                ,start=x["start"]
+                ,offset=x["offset"]
+                ,base=x["base"]
+                ,clock=x["clock"]
+                ,master=x["master"])
+    if out[DMX]["flash"]:
+        x = out[DMX]["flash"]
+        Bdmx[DMX].flash(target=x["target"]
+                ,ftime=x["ftime"]
+                ,clock=x["clock"]
+                ,delay=x["delay"])
+    if out[DMX]["fade"]:
+        x = out[DMX]["fade"]
+        Bdmx[DMX].fade(target=x["target"]
+                ,ftime=x["ftime"]
+                ,clock=x["clock"]
+                ,delay=x["delay"])
 def JCB(data,sock=None): #json client input
     t_start = time.time()
     #print("-->-",data)
@@ -974,7 +1023,8 @@ def JCB(data,sock=None): #json client input
         try:
             out = {}
             for x in cmds:
-
+                _fix_id=0
+                _attr = ""
                 if "CMD" in x:
                     print("CMD:",x)
                     if "EXEC-SPEED-MASTER" == x["CMD"]:
@@ -983,6 +1033,8 @@ def JCB(data,sock=None): #json client input
                         exec_size_master.val(x["NR"],x["VALUE"])
                     if "EXEC-OFFSET-MASTER" == x["CMD"]:
                         exec_offset_master.val(x["NR"],x["VALUE"])
+                    if "VDIM" == x["CMD"]:
+                        pass
 
                     if "SPEED-MASTER" == x["CMD"]:
                         speed_master.val(x["NR"],x["VALUE"])
@@ -990,17 +1042,48 @@ def JCB(data,sock=None): #json client input
                     if "SIZE-MASTER" == x["CMD"]:
                         size_master.val(x["NR"],x["VALUE"])
                 else:
+                    print(x)
+                    
                     if "DMX" in x:
                         DMX = int(x["DMX"])
-                    else:continue
+                    else:
+                        continue
+
                     if DMX > 0:
                         DMX -=1
-                    else:continue
-                    
+                    else:
+                        _inc = 0
+                        _fix_id = 0
+                        _val = 0
+                        _clock = 0
+                        if "VALUE" in x:
+                            _val = x["VALUE"]
+                        if "INC" in x:
+                            _inc = x["INC"]
+                        if "FIX" in x:
+                            _fix_id = x["FIX"]
+                        if "clock" in x:
+                            _clock=x["clock"]
+                        if "ATTR" in x:
+                            _attr = x["ATTR"]
+                            if "DIM" == x["ATTR"]:
+                                if _fix_id not in V_MASTER:
+                                    V_MASTER[_fix_id] = DMXCH()
+                                V_MASTER[_fix_id].fade(_val,ftime=0,clock=0,delay=0)
+                                #V_MASTER[_fix_id].next(clock) #fade(_val,ftime=0,clock=0,delay=0)
+                                #V_MASTER[_fix_id].next(clock) #fade(_val,ftime=0,clock=0,delay=0)
+                                #_init_action(Admx,out,DMX)
+                                print("  V-MASTER",_fix_id,_val,_inc)
+                        continue
+                    print("-")
                     exec_id = None
                     if "EXEC" in x:
                         exec_id = x["EXEC"]
 
+                    if "ATTR" in x:
+                        _attr = x["ATTR"]
+                    if "FIX" in x:
+                        _fix_id = x["FIX"]
                     if "VALUE" in x:# and x["VALUE"] is not None:
                         v = x["VALUE"]
                     else:continue
@@ -1031,7 +1114,7 @@ def JCB(data,sock=None): #json client input
                         continue # stop
                     
                     Bdmx[DMX].exec_id(exec_id)
-                    out[DMX] = {"flash":{},"fade":{},"fx":{},"flash_fx":{}}
+                    out[DMX] = {"flash":{},"fade":{},"fx":{},"flash_fx":{},"fix_id":_fix_id,"attr":_attr}
                     if v is not None:
                         if "FLASH" in x:
                             out[DMX]["flash"] = {"target":v,"ftime":ftime, "clock":c,"delay":delay}
@@ -1095,43 +1178,16 @@ def JCB(data,sock=None): #json client input
                 main.lock.acquire_lock()
                 for DMX in out:
                     line = out[DMX]
-
-                    if out[DMX]["fx"]:
-                        x = out[DMX]["fx"]
-                        Bdmx[DMX].fx(xtype=x["xtype"]
-                                ,size=x["size"]
-                                ,speed=x["speed"]
-                                ,invert=x["invert"]
-                                ,width=x["width"]
-                                ,start=x["start"]
-                                ,offset=x["offset"]
-                                ,base=x["base"]
-                                ,clock=x["clock"]
-                                ,master=x["master"])
-                    if out[DMX]["flash_fx"]:
-                        x = out[DMX]["flash_fx"]
-                        Bdmx[DMX].flash_fx(xtype=x["xtype"]
-                                ,size=x["size"]
-                                ,speed=x["speed"]
-                                ,invert=x["invert"]
-                                ,width=x["width"]
-                                ,start=x["start"]
-                                ,offset=x["offset"]
-                                ,base=x["base"]
-                                ,clock=x["clock"]
-                                ,master=x["master"])
-                    if out[DMX]["flash"]:
-                        x = out[DMX]["flash"]
-                        Bdmx[DMX].flash(target=x["target"]
-                                ,ftime=x["ftime"]
-                                ,clock=x["clock"]
-                                ,delay=x["delay"])
-                    if out[DMX]["fade"]:
-                        x = out[DMX]["fade"]
-                        Bdmx[DMX].fade(target=x["target"]
-                                ,ftime=x["ftime"]
-                                ,clock=x["clock"]
-                                ,delay=x["delay"])
+                    print("DMX",DMX)
+                    if out[DMX]["fix_id"]:
+                        _fix_id = out[DMX]["fix_id"]
+                        Bdmx[DMX]._fix_id = _fix_id
+                        if "attr" in out[DMX]:
+                            if out[DMX]["attr"] in ["RED","GREEN","BLUE","WHITE","AMBER"]: #CYAN,MAGENTA,YELLOW
+                                Bdmx[DMX]._v_master_id = _fix_id
+                                print("SET V_MASTER",out[DMX])
+                            
+                    _init_action(Bdmx,out,DMX)
 
             finally:
                 main.lock.release_lock()

+ 1 - 0
lib/zchat.py

@@ -308,6 +308,7 @@ class Client():
 # --- single app ---
 
 PORT=51111
+PORT=51000 #1111
 for a in sys.argv:
     if "port=" in a:
         PORT = a.split("=")[-1]

+ 2 - 2
tkgui/GUI.py

@@ -379,11 +379,11 @@ class GUI_FIX():
         self.data = data
         self.xframe = xframe
         self.draw()
+
     def draw(self):
         FIXTURES = self.data
         gui=self.gui
         xframe=self.xframe
-       
 
         r=0
         c=0
@@ -392,7 +392,6 @@ class GUI_FIX():
         for widget in xframe.winfo_children():
             widget.destroy()
 
-
         root = frame_dim
         root = frame_fix
         fix_frame = tk.Frame(root,bg="black")
@@ -1070,6 +1069,7 @@ class GUI_FixtureEditor():
             nr = int(e.elem_nr["text"]) 
             if not nr:
                 nr = args["nr"]
+                return
             nr_start = ( int(self.entry_dmx["text"])-1 + int(self.entry_univ["text"])*512 )
             nr += nr_start