示例#1
0
def main():
  def Plugins(state, plugins):
    for plugin in plugins:
      print('%d %s' % (plugin.id, plugin.name))
    wrapper.Stop()

  def PluginDescription(state, description):
    print(description)
    wrapper.Stop()

  try:
      opts, args = getopt.getopt(sys.argv[1:], "hp:", ["help", "plugin="])
  except getopt.GetoptError as err:
    print(str(err))
    Usage()
    sys.exit(2)

  plugin = None
  for o, a in opts:
    if o in ("-h", "--help"):
      Usage()
      sys.exit()
    elif o in ("-p", "--plugin"):
      plugin = int(a)

  wrapper = ClientWrapper()
  client = wrapper.Client()

  if plugin is not None:
    client.PluginDescription(PluginDescription, plugin)
  else:
    client.FetchPlugins(Plugins)

  wrapper.Run()
示例#2
0
def rec(ar):
    if ar.dev:
        serial_device = Serial(ar.dev, 115200, timeout=1)
    else:
        serial_device = Serial(detect_serial_device(), 115200, timeout=1)

    clip_name = ar.clip
    if not clip_name.endswith('.clip'):
        clip_name += '.clip'

    clip = open(os.path.join(CLIPS_DIR, clip_name), 'w')

    def dmxdata(data):
        global last
        if last == 0:
            td = 0
        else:
            td = int((datetime.now() - last).total_seconds() * 1000)

        last = datetime.now()
        pickle.dump({'td': td, 'frm': data}, clip)

        send(data, serial_device)

    universe = 1

    try:
        wrapper = ClientWrapper()
    except OLADNotRunningException:
        print("Start olad first")
        sys.exit(1)

    client = wrapper.Client()
    client.RegisterUniverse(universe, client.REGISTER, dmxdata)
    wrapper.Run()
示例#3
0
def start_wrapper():
  global wrapper
  global client
  wrapper = ClientWrapper()
  client = wrapper.Client()
  wrapper.AddEvent(0, main_loop)
  wrapper.Run()
示例#4
0
def main():
    atexit.register(killall)
    args = parse_args()
    setup_logging(args)
    # read tool config
    config = DFSConfig()

    # setup show
    show = Show(config, args.show_name)
    if not show:
        print('no such show %s', args.show_name)
        sys.exit(1)

    # setup stage
    stage = Stage(show, args.stage_name)
    if not stage:
        print('could not load or create stage %s', args.stage_name)
        sys.exit(1)

    # setup joystick
    joy = xbox.Joystick(debug=args.debug, config=config.joystick)

    if args.check_mode:
        sys.exit(0)

    handler = DmxHandler(config, show, stage, joy)

    # setup data handler, this is our callback loop
    # as DMX data comes in constantly
    wrapper = ClientWrapper()
    rx = wrapper.Client()
    rx.RegisterUniverse(config.input.universe, rx.REGISTER, handler.handle)
    wrapper.Run()
示例#5
0
def processOLA(flag):

    global wrapper
    global universe
    global data

    wrapper = ClientWrapper()
    client = wrapper.Client()

    if (flag == 1):

        data = []
        data = array.array('B')
        data.append(125)  #Intencity
        data.append(255)  #R
        data.append(255)  #G
        data.append(255)  #B

        print(data)

        ledON = 0
        while (ledON < 10):  # 10 == 10 SECONDS
            """
            # THIS IS THE AMOUNT OF TIME WE SHOULD WAIT WHEN WE GET MOTION
            # THIS VALUE WILL BE THE VALUE THE LIGHT SHOULD REMAIN ON AFTER
            # MOTION HAS BEEN DETECTED.
            """
            sleep(1)
            client.SendDmx(universe, data, DmxSent)
            wrapper.Run()
            ledON += 1

        return

    return
示例#6
0
    def __init__(self, max_dmx, universe=0):
        # XXX any way to check if this is a valid connection?
        self.universe = universe
        self.wrapper = ClientWrapper()
        self.client = self.wrapper.Client()

        self.pixels = [0] * max_dmx
示例#7
0
def main():
  try:
      opts, args = getopt.getopt(sys.argv[1:], "hp:", ["help", "plugin="])
  except getopt.GetoptError as err:
    print(str(err))
    Usage()
    sys.exit(2)

  plugin = None
  for o, a in opts:
    if o in ("-h", "--help"):
      Usage()
      sys.exit()
    elif o in ("-p", "--plugin"):
      plugin = int(a)

  global wrapper
  wrapper = ClientWrapper()
  client = wrapper.Client()

  if plugin is not None:
    client.PluginDescription(PluginDescription, plugin)
  else:
    client.FetchPlugins(Plugins)

  wrapper.Run()
示例#8
0
    def testSend(self):
        """tests that data goes out on the wire with SendDMX"""
        sockets = socket.socketpair()
        wrapper = ClientWrapper(sockets[0])

        class results:
            gotdata = False

        def DataCallback(self):
            data = sockets[1].recv(4096)
            expected = binascii.unhexlify(
                "7d000010080110001a0d557064617465446d784461746122680801126400000"
                "000000000000000000000000000000000000000000000000000000000000000"
                "000000000000000000000000000000000000000000000000000000000000000"
                "000000000000000000000000000000000000000000000000000000000000000"
                "000000")
            self.assertEqual(data,
                             expected,
                             msg="Regression check failed. If protocol change "
                             "was intended set expected to: " +
                             str(binascii.hexlify(data)))
            results.gotdata = True
            wrapper.AddEvent(0, wrapper.Stop)

        wrapper._ss.AddReadDescriptor(sockets[1], lambda: DataCallback(self))
        self.assertTrue(wrapper.Client().SendDmx(1,
                                                 array.array('B',
                                                             [0] * 100), None))

        wrapper.Run()

        self.assertTrue(results.gotdata)
    def __init__(self, universe, uid, sub_device, pid_file):
        """Create a new InteractiveModeController.

    Args:
      universe:
      uid:
      sub_device:
      pid_file:
    """
        cmd.Cmd.__init__(self)
        self._universe = universe
        self._uid = uid
        self._sub_device = sub_device

        self.pid_store = PidStore.GetStore(pid_file)
        self.wrapper = ClientWrapper()
        self.client = self.wrapper.Client()
        self.rdm_api = RDMAPI(self.client, self.pid_store)
        self._uids = []
        self._response_printer = ResponsePrinter()

        # tuple of (sub_device, command_class, pid)
        self._outstanding_request = None

        self.prompt = '> '
示例#10
0
 def run(self):
     self.wrapper = ClientWrapper()
     self.running = True
     while self.running:
         self.computeEffects()
         self.computeDMX()
         self.sendDMX()
         time.sleep(50e-3)
示例#11
0
    def start(self):
        from ola.ClientWrapper import ClientWrapper
        from ola.DMXConstants import DMX_MIN_SLOT_VALUE, DMX_MAX_SLOT_VALUE, DMX_UNIVERSE_SIZE
        self._universe = 0
        self._wrapper = ClientWrapper()
        self._client = self._wrapper.Client()

        self.run()
示例#12
0
def senddmx(data_in):
    universe = 1
    global wrapper
    wrapper = ClientWrapper()
    client = wrapper.Client()
    # send 1 dmx frame with values for channels 1-6
    client.SendDmx(universe, data_in, dmxsent)
    wrapper.Run()
示例#13
0
 def __init__(self, config, inputdevice):
     self.config = config
     self.current_frame = [0] * 512
     self.scene_updated = False
     self.input_device = InputDevice(inputdevice)
     self.wrapper = ClientWrapper()
     self.current_scene = self.config["scenes"][self.config["start_scene"] -
                                                1]
     self.nextStep(True)
    def __init__(self):
        Lighting_Controller.__init__(self)

        # dmx bits
        self.wrapper = ClientWrapper()
        self.client = self.wrapper.Client()
        self.universe = 0 # type: int
        self.wait_on_dmx = threading.Event()
        self.dmx_succeeded = False
示例#15
0
def run_strip_animation():
    wrapper = ClientWrapper()
    controller = SimpleFadeController(UPDATE_INTERVAL, wrapper)
    wrapper.AddEvent(SHUTDOWN_INTERVAL, wrapper.Stop)
    wrapper.Run()

    # Clears the variables, to prevent scope pollution.
    wrapper = None
    controller = None
示例#16
0
    def patch(self):
        global rgb, brightness, strobe
        cache = self.hash()

        parser = reqparse.RequestParser()
        parser.add_argument('rgb', type=unicode, location='json')
        parser.add_argument('strobe', type=int, location='json')
        parser.add_argument('brightness', type=int, location='json')

        # Parse the arguments into an object
        args = parser.parse_args()

        if args['rgb'] is not None:
            if not re.search(r'^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',
                             args['rgb']):
                return {'error': 'Invalid hex string'}, 400
            rgb = args['rgb']

        if args['brightness'] is not None:
            if args['brightness'] < 0 or args['brightness'] > 255:
                return {'error': 'Invalid brightness value'}, 400
            brightness = args['brightness']

        if args['strobe'] is not None:
            if args['strobe'] < 0 or args['strobe'] > 240:
                return {'error': 'Invalid strobe value'}, 400
            strobe = args['strobe']

        hex = rgb.lstrip('#')
        rgb_parts = tuple(int(hex[i:i + 2], 16) for i in (0, 2, 4))

        data = array.array(
            'B',
            [
                rgb_parts[0],  # red
                rgb_parts[1],  # green
                rgb_parts[2],  # blue
                0,  # color macros
                strobe + 15,  # strobing/program speed
                0,  # programs
                brightness  # master dimmer
            ])

        global wrapper
        wrapper = ClientWrapper()

        client = wrapper.Client()
        client.SendDmx(1, data, dmx_sent)
        wrapper.Run()

        # If the state has changed, publish a state-change event.
        if cache != self.hash():
            self.service.publish(
                'device-state-changed.{}'.format(self.identifier),
                self.to_json())

        return self.to_json(), 200
示例#17
0
def main():
    args = ParseArgs()
    universe = args.universe

    global wrapper
    wrapper = ClientWrapper()
    client = wrapper.Client()
    client.GetCandidatePorts(GetCandidatePortsCallback, universe)
    wrapper.Run()
示例#18
0
def main():
    # Set this appropriately
    device_alias = 1
    global wrapper
    wrapper = ClientWrapper()
    client = wrapper.Client()
    artnet_request = ArtNetConfigMessages_pb2.Request()
    artnet_request.type = artnet_request.ARTNET_OPTIONS_REQUEST
    client.ConfigureDevice(device_alias, artnet_request.SerializeToString(),
                           ArtNetConfigureReply)
    wrapper.Run()
    def run(self, Universe, Count):
        global wrapper
        wrapper = None
        wrapper = ClientWrapper()
        self.client = wrapper.Client()

        while self._RunOK:
            Stride()
            self.client.SendDmx(Universe, DMXData, DmxSent)
            wrapper.Run()  # send 1 dmx frame
            #		print(DMXData[:50])
            time.sleep(StrideLength)
示例#20
0
def DMXSend(inputData, universe=1):
    """ Sends inputData via DMX """
    data = array.array('B')
    for i in inputData:
        data.append(i)

    global dmxWrapper
    dmxWrapper = ClientWrapper()
    dmxClient = dmxWrapper.Client()

    dmxClient.SendDmx(universe, data, DMXSent)
    dmxWrapper.Run()
示例#21
0
    def run(self):
        def onData(data):
            # TODO check on status before assigning data
            self.data = data
            #print(data)

        self.wrapper = ClientWrapper()
        self.client = self.wrapper.Client()
        universe = 1
        self.client.RegisterUniverse(universe, self.client.REGISTER, onData)
        print('running thread')
        self.wrapper.Run()
示例#22
0
def squid(dmxrngs, delta_t):
    global rngs
    rngs = dmxrngs

    global tick_interval
    tick_interval = delta_t

    global wrapper
    wrapper = ClientWrapper()

    wrapper.AddEvent(22, SendDMXFrame)
    wrapper.Run()
示例#23
0
    def run(self):
        '''Wrapper, Framerate'''

        print "THREAD"

        self._wrapper = ClientWrapper()
        self._activesender = True
        self.univloglevel = 0
        self.base = com_sql.ComSql()

        # SQL Framerate
        try:
            engine = self.base.requete_sql(
                "SELECT * FROM dmx_engine WHERE id=1")  #setting
            for e in range(len(engine)):
                freq_ms = engine[e]['freq_ms']
        except:
            print "default to 40 fps"
            freq_ms = 25

        # FOR TEST
#        freq_ms = 500

        self._tick_interval = int(freq_ms)  # in milliseconds

        print "freq_ms"
        print self._tick_interval

        # list of scens to play
        self.scen_ids = []

        # dict to store each scenari instance
        self.my_scens = {}

        # SQL Universes
        try:
            prefs = self.base.requete_sql(
                "SELECT * FROM dmx_preferences WHERE id=1")  #setting
            for p in range(len(prefs)):
                self.univ_qty = prefs[p]['univ_qty']
        except:
            print "default to 1 universe"
            self.univ_qty = 1

        print "univ_qty"
        print self.univ_qty

        # array to store full frame
        self.WholeDmxFrame = [0] * 512 * self.univ_qty

        # send the first one
        self.SendDmxFrame()
        self._wrapper.Run()
示例#24
0
    def patch(self):
        global rgb
        global brightness
        global strobe

        parser = reqparse.RequestParser()
        parser.add_argument('rgb', type=unicode)
        parser.add_argument('strobe', type=int)
        parser.add_argument('brightness', type=int)

        # Parse the arguments into an object
        args = parser.parse_args()

        if args['rgb'] is not None:
            if not re.search(r'^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',
                             args['rgb']):
                return {'error': 'Invalid hex string'}, 400
            rgb = args['rgb']

        if args['brightness'] is not None:
            if args['brightness'] < 0 or args['brightness'] > 255:
                return {'error': 'Invalid brightness value'}, 400
            brightness = args['brightness']

        if args['strobe'] is not None:
            if args['strobe'] < 0 or args['strobe'] > 240:
                return {'error': 'Invalid strobe value'}, 400
            strobe = args['strobe']

        hex = rgb.lstrip('#')
        rgb_parts = tuple(int(hex[i:i + 2], 16) for i in (0, 2, 4))

        data = array.array(
            'B',
            [
                rgb_parts[0],  # red
                rgb_parts[1],  # green
                rgb_parts[2],  # blue
                0,  # color macros
                strobe + 15,  # strobing/program speed
                0,  # programs
                brightness  # master dimmer
            ])

        global wrapper
        wrapper = ClientWrapper()

        client = wrapper.Client()
        client.SendDmx(1, data, dmx_sent)
        wrapper.Run()

        return self.to_json(), 200
示例#25
0
def olaThread(adc, dest):
  try:
      opts, args = getopt.getopt(sys.argv[1:], "hu:", ["help", "universe="])
  except getopt.GetoptError as err:
    print(str(err))
    Usage()
    sys.exit(2)

  universe = 0
  wrapper = ClientWrapper()
  client = wrapper.Client()
  client.RegisterUniverse(universe, client.REGISTER, NewData)
  wrapper.Run()
示例#26
0
 def run(self):
     """
     the running thread
     """
     try:
         self.wrapper = ClientWrapper()
         self.client = self.wrapper.Client()
         if debug:
             print('connected to OLA server')
         self.wrapper.Run()
     except OLADNotRunningException:
         if debug:
             print('cannot connect to OLA')
示例#27
0
def main():
    try:
        opts, args = getopt.getopt(
            sys.argv[1:], 'fjiu:',
            ['help', 'full', 'incremental', 'universe='])
    except getopt.GetoptError as err:
        print(str(err))
        Usage()
        sys.exit(2)

    universe = None
    full_discovery = False
    incremental_discovery = False

    for o, a in opts:
        if o in ('-h', '--help'):
            Usage()
            sys.exit()
        elif o in ('-f', '--full'):
            full_discovery = True
        elif o in ('-i', '--incremental'):
            incremental_discovery = True
        elif o in ('-u', '--universe'):
            universe = int(a)

    if universe is None:
        Usage()
        sys.exit()

    if incremental_discovery and full_discovery:
        print('Only one of --incremental or --full can be specified')
        sys.exit()

    wrapper = ClientWrapper()
    client = wrapper.Client()

    def show_uids(state, uids):
        if state.Succeeded():
            for uid in uids:
                print(str(uid))
        else:
            print('Error: %s' % state.message, file=sys.stderr)
        wrapper.Stop()

    if full_discovery:
        client.RunRDMDiscovery(universe, True, show_uids)
    elif incremental_discovery:
        client.RunRDMDiscovery(universe, False, show_uids)
    else:
        client.FetchUIDList(universe, show_uids)
    wrapper.Run()
示例#28
0
文件: fade.py 项目: noldeni/midi2dmx
def senddmx(rgb_in):
    universe = 1
    data = array.array('B')
    # first fixture
    data.append(rgb_in['rot'])  # channel 1 rot
    data.append(rgb_in['gruen'])  # channel 2 gruen
    data.append(rgb_in['blau'])  # channel 3 blau
    data.append(0)  # channel 4 weiss
    data.append(255)  # channel 5 dimmer
    data.append(0)  # channel 6 strobe
    # second fixture
    data.append(rgb_in['rot'])  # channel 7 rot
    data.append(rgb_in['gruen'])  # channel 8 gruen
    data.append(rgb_in['blau'])  # channel 9 blau
    data.append(0)  # channel 10 weiss
    data.append(255)  # channel 11 dimmer
    data.append(0)  # channel 12 strobe
    # third fixture
    data.append(rgb_in['rot'])  # channel 13 rot
    data.append(rgb_in['gruen'])  # channel 14 gruen
    data.append(rgb_in['blau'])  # channel 15 blau
    data.append(0)  # channel 16 weiss
    data.append(255)  # channel 17 dimmer
    data.append(0)  # channel 18 strobe
    # fourth fixture
    data.append(rgb_in['rot'])  # channel 19 rot
    data.append(rgb_in['gruen'])  # channel 20 gruen
    data.append(rgb_in['blau'])  # channel 21 blau
    data.append(0)  # channel 22 weiss
    data.append(255)  # channel 23 dimmer
    data.append(0)  # channel 24 strobe
    # fifth fixture
    data.append(rgb_in['rot'])  # channel 25 rot
    data.append(rgb_in['gruen'])  # channel 26 gruen
    data.append(rgb_in['blau'])  # channel 27 blau
    data.append(0)  # channel 28 weiss
    data.append(255)  # channel 29 dimmer
    data.append(0)  # channel 30 strobe
    # sixth fixture
    data.append(rgb_in['rot'])  # channel 31 rot
    data.append(rgb_in['gruen'])  # channel 32 gruen
    data.append(rgb_in['blau'])  # channel 33 blau
    data.append(0)  # channel 34 weiss
    data.append(255)  # channel 35 dimmer
    data.append(0)  # channel 36 strobe
    global wrapper
    wrapper = ClientWrapper()
    client = wrapper.Client()
    # send 1 dmx frame with values for channels 1-6
    client.SendDmx(universe, data, dmxsent)
    wrapper.Run()
示例#29
0
def dmxListnerDaemon(universe, dmxOutputQueue, logQueue):
    global outputQueue
    outputQueue = dmxOutputQueue
    try:
        wrapper = ClientWrapper()
        client = wrapper.Client()
        client.RegisterUniverse(universe, client.REGISTER, NewDataCallback)
        wrapper.Run()
    except:
        logQueue.put_nowait("Error setting up DMX in uiniverse: %d" %
                            (universe))
        logQueue.put_nowait(traceback.format_exc())
        logQueue.put_nowait("Error setting up DMX in uiniverse: %d" %
                            (universe))
示例#30
0
def main(a, b, c, d):
    universe = 0
    data = array.array('B')
    # append first dmx-value
    for x in range(512):
        r1 = random.randint(0, 255)
        data.append(r1)

    global wrapper
    wrapper = ClientWrapper()
    client = wrapper.Client()
    # send 1 dmx frame with values for channels 1-3
    client.SendDmx(universe, data, DmxSent)
    wrapper.Run()