Explorar o código

fix: "VALUE" round(float,4)

micha %!s(int64=3) %!d(string=hai) anos
pai
achega
960632f0df
Modificáronse 1 ficheiros con 62 adicións e 12 borrados
  1. 62 12
      _LibreLightDesk.py

+ 62 - 12
_LibreLightDesk.py

@@ -193,21 +193,33 @@ def build_cmd(dmx,val,args=[fade],flash=0,xpfx="",attr=""):
                 cmd += ":{}".format(val)
     if attr:
         cmd += ":"+str(attr)
+    cprint("build_cmd",cmd,color="red")
     return cmd
 
 
 def update_raw_dmx(data ,value=None,args=[fade],flash=0,pfx="d",fx=0):
     cmd = []
+    jcmd = []
     if flash:
         pfx += "f"
 
     for row in data:
+        jxcmd={}
+        if type(value) is float:
+            jxcmd["value"] = value #round(value,3)
+        else:
+            jxcmd["value"] = value
+        jxcmd["args"] = []
+
         if fx:
             if value is not None: 
                 # z.b. flush off
                 xcmd = str(value)+":"+row["FX"].split(":",1)[-1]
+                jxcmd["fx"] = row["FX"].split(":",1)[-1]
+
             else:
                 xcmd = row["FX"]
+                #jxcmd["fx"] = row["FX"]
         else:
             if row["VALUE"] is None:
                 xcmd = ""
@@ -218,17 +230,34 @@ def update_raw_dmx(data ,value=None,args=[fade],flash=0,pfx="d",fx=0):
                     else:
                         xcmd = "{}".format(value)
                 else:
-                    xcmd = "{:0.4f}".format(row["VALUE"])
+                    v=row["VALUE"]
+                    xcmd = "{:0.4f}".format(v)
+                    cprint([v])
+                    if type(v) is float:
+                        jxcmd["value"]  = v #round(v,3)
+                    else:
+                        jxcmd["value"]  = v
 
                 for arg in args:
                     if type(arg) is float:
                         xcmd += ":{}".format(arg)
+                        jxcmd["args"].append(v)#round(arg,3))
                     else:
                         xcmd += ":{:0.4f}".format(arg)
+                        jxcmd["args"].append(arg)#round(arg,3))
                 #print( "pack: FIX",row["FIX"],row["ATTR"], xcmd)
         #xcmd += ":{}".format(row["ATTR"])
+        if len(jxcmd["args"]):
+            v=jxcmd["args"][0]
+            if type( v ) is float:
+                jxcmd["fade"] = v#round(v)
+            else:
+                jxcmd["fade"] = v
+        jcmd.append( jxcmd)
         cmd.append( xcmd)
-    cprint(cmd,color="red") 
+        if xcmd:
+            cprint("update_raw_dmx j",jxcmd,color="red") 
+            cprint("update_raw_dmx x",xcmd,color="red") 
     return cmd
 
 def update_dmx(attr,data,value=None,args=[fade],flash=0,pfx=""):
@@ -291,8 +320,8 @@ def update_dmx(attr,data,value=None,args=[fade],flash=0,pfx=""):
         if modes.val("BLIND"):
             cmd=""
 
+        cprint("update_dmx",cmd,color="red") 
         return cmd
-        cprint(cmd,color="red") 
     except Exception as e:
         cprint("== cb EXCEPT",e,color="red")
         cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
@@ -784,7 +813,7 @@ class Xevent():
                         fade = 0.01
                     elif fade < 1:
                         fade = 1.1
-
+                fade = round(fade,4)
                 self.data.elem_commands[self.attr]["text"] = "Fade{:0.2f}".format(fade)
 
             elif self.attr == "BACKUP":
@@ -956,13 +985,32 @@ class Base():
             #print(line)
             jdata = json.loads(rdata,object_pairs_hook=OrderedDict)
             nrnull = 0
+            print(jdata)
+            #if "ATTRIBUT" in jdata:  # translate old FIXTURES.fixtures start with 0 to 1          
+            #    for attr in jdata["ATTRIBUT"]:
+            #        row = jdata["ATTRIBUT"][attr]
+            #        if type(row) is OrderedDict:
+            #            #print(row)
+            #            if "VALUE" in row:
+            #                v = row["VALUE"]
+            #                if type(v) is float:
+            #                    v = round(v,4)
+            #                    jdata["ATTRIBUT"][attr]["VALUE"] = round(v,4)
+            #                    print("preset v",key,label,attr,v)
             if "ATTRIBUT" in jdata:  # translate old FIXTURES.fixtures start with 0 to 1          
                 for attr in jdata["ATTRIBUT"]:
-                    if "NR" in jdata["ATTRIBUT"][attr]:
-                        nr = jdata["ATTRIBUT"][attr]["NR"]
-                        if nr == 0:
-                            nrnull = 1
-                            break
+                    pass
+                    #if "VALUE" in jdata["ATTRIBUT"][attr]:
+                    #    v = jdata["ATTRIBUT"][attr]["VALUE"]
+                    #    if type(v) is float:
+                    #        jdata["ATTRIBUT"][attr]["VALUE"] = round(v,4)
+                    #        #print("fix v",attr,v)
+
+                    #if "NR" in jdata["ATTRIBUT"][attr]:
+                    #    nr = jdata["ATTRIBUT"][attr]["NR"]
+                    #    if nr == 0:
+                    #        nrnull = 1
+                    #        break
 
                 if nrnull:
                     print("DMX NR IS NULL",attr,"CHANGE +1")
@@ -1250,11 +1298,11 @@ class GUI(Base):
         print("GO PRESET FADE",nr,val)
 
         rdata = PRESETS.get_raw_map(nr)
+        if not rdata:
+            return 0
         print("???????")
         cfg   = PRESETS.get_cfg(nr)
         print("''''''''")
-        fcmd  = FIXTURES.update_raw(rdata)
-        print("========")
         #virtcmd  = FIXTURES.get_virtual(rdata)
         if not cfg:
             cprint("NO CFG",cfg,nr)
@@ -1277,6 +1325,7 @@ class GUI(Base):
                         value = "off"
 
             cprint("preset_go() FLUSH",value,color="red")
+            fcmd  = FIXTURES.update_raw(rdata)
             self._preset_go(rdata,cfg,fcmd,value,xfade=xfade,xFLASH=xFLASH)
                 
         elif not val:
@@ -1912,6 +1961,7 @@ class Fixtures(Base):
             text = str(attr)+' '+str(round(v,2))
             #self.gui.update(fix,attr,args={"text":text})
             #print("END 5454 _=_=_=_=_==_")
+        cprint("update_raw",cmd,color="red")
         return cmd
 
     def encoder(self,fix,attr,xval="",xfade=0):
@@ -1963,7 +2013,7 @@ class Fixtures(Base):
         out = {} 
         if change:
             data["ATTRIBUT"][attr]["ACTIVE"] = 1
-            data["ATTRIBUT"][attr]["VALUE"] = v2
+            data["ATTRIBUT"][attr]["VALUE"] = round(v2,4)
             if xfade:
                 cmd=update_dmx(attr=attr,data=data)
             else: