Mercurial > code > home > repos > light9
diff light8/dmxclient.py @ 0:45b12307c695
Initial revision
author | drewp |
---|---|
date | Wed, 03 Jul 2002 09:37:57 +0000 |
parents | |
children | b75bfbcf5979 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/light8/dmxclient.py Wed Jul 03 09:37:57 2002 +0000 @@ -0,0 +1,53 @@ +""" module for clients to use for easy talking to the dmx +server. sending levels is now a simple call to +dmxclient.outputlevels(..) + +client id is formed from sys.argv[0] and the PID. """ + +import xmlrpclib,os,sys,socket,time +from twisted.web.xmlrpc import Proxy +_dmx=None + +_id="%s-%s" % (sys.argv[0].replace('.py','').replace('./',''),os.getpid()) + +def outputlevels(levellist,twisted=0): + """present a list of dmx channel levels, each scaled from + 0..1. list can be any length- it will apply to the first len() dmx + channels. + + if the server is not found, outputlevels will block for a + second.""" + + global _dmx,_id + + if _dmx is None: + host = os.getenv('DMXHOST', 'localhost') + url = "http://%s:8030" % host + if not twisted: + _dmx=xmlrpclib.Server(url) + else: + _dmx = Proxy(url) + + if not twisted: + try: + _dmx.outputlevels(_id,levellist) + except socket.error,e: + print "dmx server error %s, waiting"%e + time.sleep(1) + except xmlrpclib.Fault,e: + print "outputlevels had xml fault: %s" % e + time.sleep(1) + else: + def err(error): + print "dmx server error",error + time.sleep(1) + d = _dmx.callRemote('outputlevels',_id,levellist) + d.addErrback(err) + + +dummy = os.getenv('DMXDUMMY') +if dummy: + print "dmxclient: DMX is in dummy mode." + def bogus(*args): + pass + outputlevels = bogus