Mercurial > code > home > repos > light9
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):