comparison light8/dmxclient.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children b75bfbcf5979
comparison
equal deleted inserted replaced
-1:000000000000 0:45b12307c695
1 """ module for clients to use for easy talking to the dmx
2 server. sending levels is now a simple call to
3 dmxclient.outputlevels(..)
4
5 client id is formed from sys.argv[0] and the PID. """
6
7 import xmlrpclib,os,sys,socket,time
8 from twisted.web.xmlrpc import Proxy
9 _dmx=None
10
11 _id="%s-%s" % (sys.argv[0].replace('.py','').replace('./',''),os.getpid())
12
13 def outputlevels(levellist,twisted=0):
14 """present a list of dmx channel levels, each scaled from
15 0..1. list can be any length- it will apply to the first len() dmx
16 channels.
17
18 if the server is not found, outputlevels will block for a
19 second."""
20
21 global _dmx,_id
22
23 if _dmx is None:
24 host = os.getenv('DMXHOST', 'localhost')
25 url = "http://%s:8030" % host
26 if not twisted:
27 _dmx=xmlrpclib.Server(url)
28 else:
29 _dmx = Proxy(url)
30
31 if not twisted:
32 try:
33 _dmx.outputlevels(_id,levellist)
34 except socket.error,e:
35 print "dmx server error %s, waiting"%e
36 time.sleep(1)
37 except xmlrpclib.Fault,e:
38 print "outputlevels had xml fault: %s" % e
39 time.sleep(1)
40 else:
41 def err(error):
42 print "dmx server error",error
43 time.sleep(1)
44 d = _dmx.callRemote('outputlevels',_id,levellist)
45 d.addErrback(err)
46
47
48 dummy = os.getenv('DMXDUMMY')
49 if dummy:
50 print "dmxclient: DMX is in dummy mode."
51 def bogus(*args):
52 pass
53 outputlevels = bogus