ソースを参照

Improve debug and low-end decay

Zachary Kotlarek 12 年 前
親
コミット
195095e3b2
1 ファイル変更、14 行追加、9 行削除
  1. 14 9
      dmx/dmx.py

+ 14 - 9
dmx/dmx.py

@@ -13,22 +13,25 @@ import string
 import subprocess
 import subprocess
 from ola.ClientWrapper import ClientWrapper
 from ola.ClientWrapper import ClientWrapper
 
 
+# ====================================
+# Defaults
+# ====================================
+interval = 50
+universe = 0
+max_value = 255
+max_delay = 300000
+max_channels = 255
+min_delta = 0.005
+
 # ====================================
 # ====================================
 # Globals
 # Globals
 # ====================================
 # ====================================
-max_channels = 512
 wrapper = None
 wrapper = None
 state = [ 0 ] * max_channels
 state = [ 0 ] * max_channels
 cmds = { 'value' : [ 0 ] * max_channels, 'ticks' : [ 0 ] * max_channels, 'delay' : [ 0 ] * max_channels }
 cmds = { 'value' : [ 0 ] * max_channels, 'ticks' : [ 0 ] * max_channels, 'delay' : [ 0 ] * max_channels }
 sock = None
 sock = None
 max_mesg_len = 1024
 max_mesg_len = 1024
 
 
-# ====================================
-# Defaults
-# ====================================
-interval = 50
-universe = 0
-
 # ====================================
 # ====================================
 # Wrapper callback -- exit on errors
 # Wrapper callback -- exit on errors
 # ====================================
 # ====================================
@@ -64,7 +67,7 @@ def SendDMXFrame():
       delay = 0
       delay = 0
     
     
     # Save valid commands
     # Save valid commands
-    if (channel >= 0 and channel <= 512 and intensity >= 0 and intensity <= 255 and duration >= 0 and duration <= 300000 and delay >= 0 and delay < 300000):
+    if (channel >= 0 and channel <= max_channels and intensity >= 0 and intensity <= max_value and duration >= 0 and duration <= max_delay and delay >= 0 and delay < max_delay):
       if (channel > 0):
       if (channel > 0):
         cmds['value'][channel - 1] = intensity
         cmds['value'][channel - 1] = intensity
         cmds['ticks'][channel - 1] = duration / interval
         cmds['ticks'][channel - 1] = duration / interval
@@ -89,11 +92,13 @@ def SendDMXFrame():
           delta = diff
           delta = diff
         else:
         else:
           delta = float(diff) / float(cmds['ticks'][i])
           delta = float(diff) / float(cmds['ticks'][i])
+        if (abs(delta) < min_delta):
+          delta = diff
         state[i] += delta
         state[i] += delta
         cmds['ticks'][i] -= 1
         cmds['ticks'][i] -= 1
       if (0):
       if (0):
         print 'Channel:', (i + 1)
         print 'Channel:', (i + 1)
-        print "\tDelay:", cmds['delay'][i], "\tValue:", state[i], "\tDelta:", delta, "\tTicks:", cmds['ticks'][i]
+        print "\tDelay:", cmds['delay'][i], "\tValue:", '%.3f' % state[i], "\tDelta:", '%.3f' % delta, "\tTicks:", cmds['ticks'][i]
     
     
   # Send all DMX channels
   # Send all DMX channels
   data = array.array('B')
   data = array.array('B')