changeset 333:44189a37a876

change dmxserver to use enttec opendmx
author drewp@bigasterisk.com
date Mon, 02 Apr 2007 14:33:38 +0000
parents d4aff817a304
children 42e4c4728a66
files bin/dmxserver light9/io/__init__.py
diffstat 2 files changed, 22 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/bin/dmxserver	Fri Mar 16 21:10:44 2007 +0000
+++ b/bin/dmxserver	Mon Apr 02 14:33:38 2007 +0000
@@ -28,7 +28,8 @@
 import sys,time,os
 from optparse import OptionParser
 import run_local
-from light9.io import ParportDMX
+from light9.io import ParportDMX, UsbDMX
+
 from light9.updatefreq import Updatefreq
 from light9 import networking
 
@@ -51,7 +52,7 @@
         self.calldelay=1/options.updates_per_sec 
 
         print "starting parport connection"
-        self.parportdmx=ParportDMX()
+        self.parportdmx=UsbDMX() #ParportDMX()
         if os.environ.get('DMXDUMMY',0):
             self.parportdmx.godummy()
         else:
@@ -113,7 +114,9 @@
             self.laststatsprint=time.time()
             self.printstats()
 
-        if self.clientschanged or time.time()>self.lastupdate+1:
+        # used to be a fixed 1 in here, for the max delay between
+        # calls, instead of calldelay
+        if self.clientschanged or time.time() > self.lastupdate + self.calldelay:
             self.lastupdate=time.time()
             self.sendlevels_dmx()
 
--- a/light9/io/__init__.py	Fri Mar 16 21:10:44 2007 +0000
+++ b/light9/io/__init__.py	Mon Apr 02 14:33:38 2007 +0000
@@ -1,4 +1,5 @@
-
+from __future__ import division
+import sys
 
 class BaseIO:
     def __init__(self):
@@ -53,6 +54,20 @@
         for p in range(1, self.dimmers + 2):
             self.parport.outbyte(levels[p-1]*255 / 100)
 
+class UsbDMX(BaseIO):
+    dimmers = 512
+    def __init__(self):
+        BaseIO.__init__(self)
+        sys.path.append("/home/drewp/dmx_usb_module")
+        from dmx import Dmx
+        self.out = Dmx()
+
+    def sendlevels(self, levels):
+        if self.dummy:
+            return
+        packet = ''.join([chr(int(lev * 255 / 100)) for lev in levels]) + "\x55"
+        self.out.write(packet)
+
 class SerialPots(BaseIO):
     """
     this is a dummy object (that returns zeros forever) until you call startup()