annotate light8/dmxclient.py @ 0:45b12307c695

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