Changeset - 44189a37a876
[Not reviewed]
default
0 2 0
drewp@bigasterisk.com - 18 years ago 2007-04-02 14:33:38
drewp@bigasterisk.com
change dmxserver to use enttec opendmx
2 files changed with 22 insertions and 4 deletions:
0 comments (0 inline, 0 general)
bin/dmxserver
Show inline comments
 
@@ -25,13 +25,14 @@ todo:
 
from __future__ import division
 
from twisted.internet import reactor
 
from twisted.web import xmlrpc, server
 
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
 

	
 
class XMLRPCServe(xmlrpc.XMLRPC):
 
    def __init__(self,options):
 

	
 
@@ -48,13 +49,13 @@ class XMLRPCServe(xmlrpc.XMLRPC):
 
        self.laststatsprint=0  # time
 

	
 
        # desired seconds between sendlevels() calls
 
        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:
 
            self.parportdmx.golive()
 
            
 

	
 
@@ -110,13 +111,15 @@ class XMLRPCServe(xmlrpc.XMLRPC):
 
                self.num_unshown_updates+=1
 

	
 
        if time.time()>self.laststatsprint+2:
 
            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()
 

	
 
        self.clientschanged=0 # clear the flag
 
        
 
    def calclevels(self):
light9/io/__init__.py
Show inline comments
 

	
 
from __future__ import division
 
import sys
 

	
 
class BaseIO:
 
    def __init__(self):
 
        self.dummy=1
 
        self.__name__ = 'BaseIO'
 
        # please override and set __name__ to your class name
 
@@ -50,12 +51,26 @@ class ParportDMX(BaseIO):
 
        levels = list(levels) + [0]
 
        # if levels[14] > 0: levels[14] = 100 # non-dim
 
        self.parport.outstart()
 
        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()
 
    which makes it bind to the port, etc
 
    
 
    """
0 comments (0 inline, 0 general)