Changeset - e263c4bd73f9
[Not reviewed]
default
0 2 0
Drew Perttula - 12 years ago 2013-06-07 07:13:24
drewp@bigasterisk.com
pass dmx choice into dmxserver
Ignore-this: 182e13858be1aa68fc956e345dbbf8ed
2 files changed with 6 insertions and 3 deletions:
0 comments (0 inline, 0 general)
bin/dmxserver
Show inline comments
 
@@ -43,25 +43,25 @@ class XMLRPCServe(xmlrpc.XMLRPC):
 
        self.clientfreq={} # clientID : updatefreq
 
        
 
        self.combinedlevels=[] # list of levels, after max'ing the clients
 
        self.clientschanged=1 # have clients sent anything since the last send?
 
        self.options=options
 
        self.lastupdate=0 # time of last dmx send
 
        self.laststatsprint=0  # time
 

	
 
        # desired seconds between sendlevels() calls
 
        self.calldelay=1/options.updates_per_sec 
 

	
 
        print "starting parport connection"
 
        self.parportdmx=UsbDMX() #ParportDMX()
 
        self.parportdmx = UsbDMX(port=options.dmx_device)
 
        if os.environ.get('DMXDUMMY',0):
 
            self.parportdmx.godummy()
 
        else:
 
            self.parportdmx.golive()
 
            
 

	
 
        self.updatefreq=Updatefreq() # freq of actual dmx sends
 
        self.num_unshown_updates=None
 
        self.lastshownlevels=None
 
        # start the loop
 
        self.sendlevels()
 

	
 
@@ -195,24 +195,26 @@ class XMLRPCServe(xmlrpc.XMLRPC):
 
            print "hello new client %s" % cid
 
            self.clientfreq[cid]=Updatefreq()
 
        self.lastseen[cid]=time.time()
 
        self.clientfreq[cid].update()
 
        
 

	
 
parser=OptionParser()
 
parser.add_option("-f","--fast-updates",action='store_true',
 
                  help=('display all dmx output to stdout instead '
 
                        'of the usual reduced output'))
 
parser.add_option("-r","--updates-per-sec",type='float',default=20,
 
                  help=('dmx output frequency'))
 
parser.add_option("-d","--dmx-device", default='/dev/dmx0',
 
                  help='dmx device name')
 
parser.add_option("-n", "--dummy", action="store_true",
 
                  help="dummy mode, same as DMXDUMMY=1 env variable")
 
(options,songfiles)=parser.parse_args()
 

	
 
print options
 

	
 
if options.dummy:
 
    os.environ['DMXDUMMY'] = "1"
 

	
 
port = networking.dmxServer.port
 
print "starting xmlrpc server on port %s" % port
 
reactor.listenTCP(port,server.Site(XMLRPCServe(options)))
light9/io/__init__.py
Show inline comments
 
@@ -46,35 +46,36 @@ class ParportDMX(BaseIO):
 
        
 
    def sendlevels(self, levels):
 
        if self.dummy:
 
            return
 
        
 
        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):
 
    def __init__(self, dimmers=72):
 
    def __init__(self, dimmers=72, port='/dev/dmx0'):
 
        BaseIO.__init__(self)
 
        self.__name__ = "UsbDMX"
 
        self.port = port
 
        self.out = None
 
        self.dimmers = dimmers
 

	
 
    def _dmx(self):
 
        if self.out is None:
 
            sys.path.append("dmx_usb_module")
 
            from dmx import Dmx
 
            self.out = Dmx('/dev/dmx0')
 
            self.out = Dmx(self.port)
 
        return self.out
 
        
 

	
 
    def sendlevels(self, levels):
 
        if self.dummy:
 
            return
 
        # I was outputting on 76 and it was turning on the light at
 
        # dmx75. So I added the 0 byte.
 
        packet = '\x00' + ''.join([chr(int(lev * 255 / 100)) 
 
                                  for lev in levels]) + "\x55"
 
        self._dmx().write(packet)
 

	
0 comments (0 inline, 0 general)