# Cavendish skin uses APIs deprecated in 1.42; keep those warnings out of the error log $wgDeprecationReleaseLimit = "1.41"; $wgEnableSidebarCache = true; $wgParserCacheType = CACHE_DB; OLA Python API: Difference between revisions - wiki.openlighting.org
Personal tools
The Open Lighting Project has moved!

We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.

OLA Python API: Difference between revisions

From wiki.openlighting.org

Jump to: navigation, search
No edit summary
Line 36: Line 36:
== Interesting Classes ==
== Interesting Classes ==


; LlaClient
; ClientWrapper
: the main connection class
: A helper class that connects to the server and creates a new OlaClient
; dmxBuffer
; OlaClient
: represents a list of DMX channel values
: The main API
; LlaClientObserver
 
: base class to handle events
 
; LlaPlugin
The best documentation is the set of example programs in the python/examples directory.
: represents a Plugin
; LlaDevice
: represents a Device


== Sending DMX ==
== Sending DMX ==
Line 51: Line 48:


<pre>
<pre>
from lla import *
import array
import sys
from ola.ClientWrapper import ClientWrapper


con = LlaClient()
def DmxSent(state):
if con.start():
   wrapper.Stop()
   sys.exit()


universe = 0
universe = 1
 
data = array.array('B')
# create a dmxBuffer for the channel values
data.append(10)
DMX_LEN = 512
data.append(50)
dmx = dmxBuffer(DMX_LEN)
data.append(255)
for i in range(0, DMX_LEN):
wrapper = ClientWrapper()
  dmx[i] = i
client = wrapper.Client()
 
client.SendDmx(universe, data, DmxSent)
con.send_dmx(universe, dmx, DMX_LEN)
wrapper.Run()
</pre>
</pre>


== Receiving DMX ==
== Receiving DMX ==


Receiving is slightly harder, we need to setup an Observer object to handle the events:
Here is some code to receive DMX on universe 1.
 
''' THIS ISN'T WORKING YET ''' [simonn]


<pre>
<pre>
from lla import *
from ola.ClientWrapper import ClientWrapper
import sys
 
class Observer(LlaClientObserver):
  """ Handle the events """
  def new_dmx(self, uni, length, data):
    """ Called with new dmx buffer """
    return 0
 
 
# create a new LlaClient
con = LlaClient()
 
# create an observer object and register
ob = Observer()
con.set_observer(ob)
 
if con.start():
  sys.exit()


con.register_uni(1, LlaClient.REGISTER)
def NewData(data):
  print data


while True:
universe = 1
  con.fd_action(1)


wrapper = ClientWrapper()
client = wrapper.Client()
client.RegisterUniverse(universe, client.REGISTER, NewData)
wrapper.Run()
</pre>
</pre>

Revision as of 18:56, 9 January 2011

Building the Python Bindings

You need the python version of protocol buffers installed.

See Building LLA but run

$ ./configure --enable-python-libs

Check where the modules are going to be installed:

$ grep ^pythondir config.log
pythondir='/Library/Python/2.5/site-packages'

Run the usual: make, make check, make install.

Check that the modules have been installed correctly in the $pythondir above.

Check that $pythondir appears in sys.path:

$ python -c "import sys; print sys.path"

If it doesn't add it to $PYTHONPATH:

$ export PYTHONPATH=$PYTHONPATH:/path/to/your/install/dir

You probably want to put this line in your shell .rc file.

Interesting Classes

ClientWrapper
A helper class that connects to the server and creates a new OlaClient
OlaClient
The main API


The best documentation is the set of example programs in the python/examples directory.

Sending DMX

A simple example to send DMX:

import array
from ola.ClientWrapper import ClientWrapper

def DmxSent(state):
  wrapper.Stop()

universe = 1
data = array.array('B')
data.append(10)
data.append(50)
data.append(255)
wrapper = ClientWrapper()
client = wrapper.Client()
client.SendDmx(universe, data, DmxSent)
wrapper.Run()

Receiving DMX

Here is some code to receive DMX on universe 1.

from ola.ClientWrapper import ClientWrapper

def NewData(data):
  print data

universe = 1

wrapper = ClientWrapper()
client = wrapper.Client()
client.RegisterUniverse(universe, client.REGISTER, NewData)
wrapper.Run()