changeset 1800:626a79891061

support for multiple Udmx outputs, according to usb bus numbeR Ignore-this: e3b8275e6dfc7edb74fd71fdc0595e4d
author drewp@bigasterisk.com
date Fri, 08 Jun 2018 03:36:13 +0000
parents 0bb7b9df12e5
children 6b101309fb12
files light9/collector/output.py light9/io/udmx.py
diffstat 2 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/light9/collector/output.py	Fri Jun 08 03:35:30 2018 +0000
+++ b/light9/collector/output.py	Fri Jun 08 03:36:13 2018 +0000
@@ -133,11 +133,11 @@
                               scales.PmfStat('update'),
                               scales.PmfStat('write'),
                               scales.IntStat('usbErrors'))
-    def __init__(self, uri, numChannels):
+    def __init__(self, uri, bus, numChannels):
         DmxOutput.__init__(self, uri, numChannels)
         
         from light9.io.udmx import Udmx
-        self.dev = Udmx()
+        self.dev = Udmx(bus)
         self.currentBuffer = ''
         self.lastSentBuffer = None
         self.lastLog = 0
--- a/light9/io/udmx.py	Fri Jun 08 03:35:30 2018 +0000
+++ b/light9/io/udmx.py	Fri Jun 08 03:36:13 2018 +0000
@@ -24,8 +24,14 @@
 cmd_SetChannelRange = 0x0002
 
 class Udmx(object):
-    def __init__(self):
-        self.dev = usb.core.find(idVendor=0x16c0, idProduct=0x05dc)
+    def __init__(self, bus):
+        self.dev = None
+        for dev in usb.core.find(idVendor=0x16c0, idProduct=0x05dc, find_all=True):
+            print "udmx device at %r" % dev.bus
+            if bus is None or bus == dev.bus:
+                self.dev = dev
+        if not self.dev:
+            raise IOError('no matching udmx device found for requested bus %r' % bus)
         log.info('found udmx at %r', self.dev)
         
     def SendDMX(self, buf):