Переглянути джерело

fix: FIXTURE.raw_update update=0 on flash

micha 3 роки тому
батько
коміт
00f57da21e
2 змінених файлів з 38 додано та 22 видалено
  1. 31 15
      _LibreLightDesk.py
  2. 7 7
      lib/chat.py

+ 31 - 15
_LibreLightDesk.py

@@ -164,7 +164,7 @@ INT   = ["DIM","SHUTTER","STROBE","FUNC"]
 client = chat.tcp_sender(port=50001)
 jclient = chat.tcp_sender()#port=50001)
 def jclient_send(data):
-    jclient.send( json.dumps(data) +"\x00")
+    jclient.send("\00 "+ json.dumps(data) +"\00 ")
 
 class _FadeTime():
     def __init__(self):
@@ -280,10 +280,10 @@ def update_raw_dmx(data ,value=None,args=[],xfade=0,flash=0,pfx="d",fx=0):
 
                 for arg in args:
                     if type(arg) is float:
-                        xcmd += ":{}".format(arg)
+                        xcmd += ":{:0.4f}".format(arg)
                         jxcmd["args"].append(v)#round(arg,3))
                     else:
-                        xcmd += ":{:0.4f}".format(arg)
+                        xcmd += ":{}".format(arg)
                         jxcmd["args"].append(arg)#round(arg,3))
                 #print( "pack: FIX",row["FIX"],row["ATTR"], xcmd)
 
@@ -426,9 +426,7 @@ class Xevent():
 
     def fx(self,event):
         cprint("Xevent.fx",self.attr,self.fix,event)
-        jdata = {"MODE":"FX"}
-        jdata["FIX"] = fix
-        jdata["ATTR"] =attr
+        jdatas = []
         if event.num == 4:
             cprint("FX:COLOR CHANGE",fx_prm,color="red")
             txt = "FX:RED" 
@@ -489,6 +487,10 @@ class Xevent():
                     data = FIXTURES.fixtures[fix]
                     #print( "ADD FX",fix)
                     for attr in data["ATTRIBUT"]:
+                        jdata = {"MODE":"FX"}
+                        jdata["FIX"] = fix
+                        jdata["DMX"] = FIXTURES.get_dmx(fix,attr)
+                        jdata["ATTR"] =attr
                         if attr.endswith("-FINE"):
                             continue
 
@@ -640,6 +642,15 @@ class Xevent():
                                 else:
                                     cprint("FX: unbekant",fx_modes[fx_prm["MODE"]],color="red")
 
+                            jdata["TYPE"]  = fx
+                            jdata["OFFSET"]= coffset
+                            jdata["SPEED"] = cspeed
+                            jdata["START"] = cstart
+                            jdata["BASE"]  = cbase
+                            if fx:
+                                print(jdata)
+                                jdatas.append(jdata)
+
                         if fx:
                             #fx += ":{:0.0f}:{:0.0f}:{:0.0f}:{:0.0f}:{}:".format(fx_prm["SIZE"],fx_prm["SPEED"],start,offset,base)
                             fx += ":{:0.0f}:{:0.0f}:{:0.0f}:{:0.0f}:{}:".format(csize,cspeed,cstart,coffset,cbase)
@@ -653,13 +664,14 @@ class Xevent():
                             data["ATTRIBUT"][attr]["FX"] = fx #"sinus:40:100:10"
                             cmd+=update_dmx(attr,data,pfx="fx",value=fx)#,flash=FLASH)
 
+
                     if fx_prm["OFFSET"] > 0.5 and offset_flag:  
                         offset_flag=0
                         offset += fx_prm["OFFSET"] # add offset on next fixture
                     #print("offset",offset)
             if cmd and not modes.val("BLIND"):
                 client.send(cmd)
-                jclient_send([jdata])
+                jclient_send(jdatas)
             master.refresh_fix()
 
 
@@ -1381,7 +1393,7 @@ class GUI(Base):
                         value = "off"
 
             cprint("preset_go() FLUSH",value,color="red")
-            fcmd  = FIXTURES.update_raw(rdata)
+            fcmd  = FIXTURES.update_raw(rdata,update=0)
             self._preset_go(rdata,cfg,fcmd,value,xfade=xfade,xFLASH=xFLASH)
                 
         elif not val:
@@ -1395,6 +1407,9 @@ class GUI(Base):
         if not (modes.val("FLASH") or ( "BUTTON" in cfg and cfg["BUTTON"] == "FL")): #FLASH
             self.refresh_exec()
             self.refresh_fix()
+        else:
+            self.refresh_exec()
+            self.refresh_fix()
 
     def _preset_go(self,rdata,cfg,fcmd,value,xfade=None,event=None,xFLASH=0):
         if xfade is None and FADE._is():
@@ -1406,7 +1421,7 @@ class GUI(Base):
 
         cmd = []
         for vcmd,d in [[jvvcmd,"d"],[jfxcmd,"fx"]]:
-            cprint(vcmd)
+            #cprint(vcmd)
             if xFLASH:
                 d+="f"
             for i,v in enumerate(fcmd):
@@ -1435,7 +1450,7 @@ class GUI(Base):
         if cmd and not modes.val("BLIND"):
             pass
             jclient_send(cmd)
-        return 0
+        return 0 #======================= END
 
         cmd=[]
         for vcmd,d in [[vvcmd,"d"],[fxcmd,"fx"]]:
@@ -2021,19 +2036,20 @@ class Fixtures(Base):
             if "UNIVERS" in data:
                 DMX += (int(data["UNIVERS"])*512)
             adata = self.get_attr(fix,attr)
-            cprint(adata,DMX)
+            #-hier ende 8.2.22
+            cprint("adata",adata,DMX)
 
             if adata:
                 if "NR" in adata:
                     NR = adata["NR"] 
-                    if NR > 0:
+                    if NR:
                         DMX+=NR-1
                     else:
                         return -2
                 return DMX
             return -4
         return -3
-    def update_raw(self,rdata):
+    def update_raw(self,rdata,update=1):
         cprint("update_raw",len(rdata))
         cmd = []
         for i,d in enumerate(rdata):
@@ -2059,7 +2075,7 @@ class Fixtures(Base):
 
             if attr not in ATTR:
                 continue
-        
+            #DMX = FIXTURES.get_dmx(fix) 
             if ATTR[attr]["NR"] >= 0:
                 DMX = sDMX+ATTR[attr]["NR"]-1
                 xcmd["DMX"] = str(DMX)
@@ -2075,7 +2091,7 @@ class Fixtures(Base):
             cmd.append(xcmd)
 
             v=ATTR[attr]["VALUE"]
-            if v2 is not None:
+            if v2 is not None and update:
                 ATTR[attr]["VALUE"] = v2
 
             #self.data.elem_attr[fix][attr]["text"] = str(attr)+' '+str(round(v,2))

+ 7 - 7
lib/chat.py

@@ -160,13 +160,13 @@ class CMD():
                                 cb({"c":client_nr,"cmd":cmd})
 
 
-                        else: #workaround json sock pkg-drops
-                            print("+++ Verbindung zu %s beendet" % ip)
-                            sock.close()
-                            if sock in clients:
-                                client_nr = clients.index(sock)
-                                clients2[client_nr] = ""
-                            clients.remove(sock)
+                        #else: #workaround json sock pkg-drops
+                        #    print("+++ Verbindung zu %s beendet" % ip)
+                        #    sock.close()
+                        #    if sock in clients:
+                        #        client_nr = clients.index(sock)
+                        #        clients2[client_nr] = ""
+                        #    clients.remove(sock)
                         time.sleep(0.0001)
         except KeyboardInterrupt:
             print(" strg+c")