# HG changeset patch # User drewp@bigasterisk.com # Date 2007-04-02 14:33:38 # Node ID 44189a37a876f0fef48d70ea79388c4b0abe96b5 # Parent d4aff817a304940b977040a71d3ac0fb7d9c99b4 change dmxserver to use enttec opendmx diff --git a/bin/dmxserver b/bin/dmxserver --- a/bin/dmxserver +++ b/bin/dmxserver @@ -28,7 +28,8 @@ 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 @@ -51,7 +52,7 @@ class XMLRPCServe(xmlrpc.XMLRPC): 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 @@ class XMLRPCServe(xmlrpc.XMLRPC): 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() diff --git a/light9/io/__init__.py b/light9/io/__init__.py --- a/light9/io/__init__.py +++ b/light9/io/__init__.py @@ -1,4 +1,5 @@ - +from __future__ import division +import sys class BaseIO: def __init__(self): @@ -53,6 +54,20 @@ class ParportDMX(BaseIO): 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()