class DmxOutput(BaseInterface): def __init__(self, portname): super().__init__("DMX out", "green") self.portname = portname self.serialok = False self.test = False def listen(self): while self.isRunning() and not self.serialok: try: port = get_port_by_serial_number(self.portname) self.log("Starting DMX sender on port", port) self.dmx = Controller(port) self.serialok = True except: self.log("ERROR: ", self.portname, "not found.. retrying") time.sleep(5) self.stopped.wait() # i = 0 # while self.isRunning(): # if not self.test: # time.sleep(0.2) # else: # i = (i+1)%2 # if i % 2: # self.dmx.set_channel(1, 255) # else: # self.dmx.set_channel(1, 128) # self.dmx.submit() # time.sleep(1) # for i in range(256): # self.set_channel(1, i) # self.submit() # time.sleep(0.02) # for i in range(256): # self.set_channel(1, 255-i) # self.submit() # time.sleep(0.02) def setBuffer(self, buffer): for i in range(min(512, len(buffer))): if i > 0: self.dmx.set_channel(i, buffer[i]) self.dmx.submit()
def run(shared): dmx = Controller('/dev/ttyUSB0') dmx.set_all_channels(0) dmx.submit() phase = Phase() while True: info = shared.get() last_beat = info['last_beat'] bpm = info['bpm'] if shared.debug_on: dmx_programs.debug(shared, dmx, phase) elif shared.auto_on: dmx_programs.auto(shared, dmx, phase) else: phase.update(last_beat, bpm) PROGRAMS[shared.program_index](shared, dmx, phase) dmx.submit() time.sleep(0.01)
''' sudo pip install DMXEnttecPro ''' ''' from DMXEnttecPro import Controller dmx = Controller('/dev/ttyUSB0') # or ''' from DMXEnttecPro import Controller from DMXEnttecPro.utils import get_port_by_serial_number, get_port_by_product_id #my_port = get_port_by_serial_number('6A3ROIWE') my_port = get_port_by_product_id(24577) dmx = Controller(my_port) dmx.set_channel(2,0) dmx.set_channel(3,0) dmx.submit()