Просмотр исходного кода

Improve debug and low-end decay

Zachary Kotlarek 12 лет назад
Родитель
Сommit
195095e3b2
1 измененных файлов с 14 добавлено и 9 удалено
  1. 14 9
      dmx/dmx.py

+ 14 - 9
dmx/dmx.py

@@ -13,22 +13,25 @@ import string
 import subprocess
 from ola.ClientWrapper import ClientWrapper
 
+# ====================================
+# Defaults
+# ====================================
+interval = 50
+universe = 0
+max_value = 255
+max_delay = 300000
+max_channels = 255
+min_delta = 0.005
+
 # ====================================
 # Globals
 # ====================================
-max_channels = 512
 wrapper = None
 state = [ 0 ] * max_channels
 cmds = { 'value' : [ 0 ] * max_channels, 'ticks' : [ 0 ] * max_channels, 'delay' : [ 0 ] * max_channels }
 sock = None
 max_mesg_len = 1024
 
-# ====================================
-# Defaults
-# ====================================
-interval = 50
-universe = 0
-
 # ====================================
 # Wrapper callback -- exit on errors
 # ====================================
@@ -64,7 +67,7 @@ def SendDMXFrame():
       delay = 0
     
     # 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):
         cmds['value'][channel - 1] = intensity
         cmds['ticks'][channel - 1] = duration / interval
@@ -89,11 +92,13 @@ def SendDMXFrame():
           delta = diff
         else:
           delta = float(diff) / float(cmds['ticks'][i])
+        if (abs(delta) < min_delta):
+          delta = diff
         state[i] += delta
         cmds['ticks'][i] -= 1
       if (0):
         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
   data = array.array('B')