view light8/potserver.py @ 167:79bc84310e80

changes from tonight's rehearsal: changes from tonight's rehearsal: - CueFader is closer to actually running the show, computes DMX levels to send. - KeyboardComposer is not a dummy. Use DMXDUMMY=1 to disable it. - Submaster: subs can now be "temporary" -- i.e. they shouldn't be saved or loaded. to save a temporary sub, make a copy of it with a proper name since the computed name will be ugly. Also, get_normalized_copy() and crossfade() methods added. linear_fade helper (shouldn't be in Submaster, probably) added too. - dmxchanedit: longer labels - cuelist1 now has some bogus data in it and some crap removed - dmxclient: now listens to the $DMXHOST and $DMXDUMMY env variables. - patchdata: now up to date with this year's show - danshow subs song{01..19}: removed. maybe we'll re-add them in an archive directory.
author dmcc
date Tue, 08 Jul 2003 16:19:55 +0000
parents d8e2492e2947
children
line wrap: on
line source

#!/usr/bin/python

import socket,time

from io import *

pots = SerialPots()
pots.golive()

laste=""
lastlevs=(0,0,0,0)
dirs=[0,0,0,0]
samples=nsends=noises=0
watch=0
while 1:
    if samples > 30:
        fps=1.0*samples/(time.time()-watch)
        watch=time.time()
        print "S"*nsends+"n"*noises+" "*(samples-nsends-noises),"%.1f Hz"%fps
        samples=nsends=noises=0
    samples+=1
    l=pots.getlevels()
    
    # no change at all?
    if l==lastlevs:
        time.sleep(.01)    
        continue

    report=0 # we only will report if a dimmer moves twice in the same direction
    for i in range(0,4):
        change = l[i]-lastlevs[i]
        if change!=0:
            thisdir = (change>0)-(change<0)
            if thisdir==dirs[i]:
                # a dimmer is moving in a constant direction
                report=1
            dirs[i]=thisdir

    if report==0:
        noises+=1
        continue
    
    lastlevs = l
    nsends+=1

    try:
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #s.setblocking(1)
        ret=s.connect_ex(("10.1.0.32", socket.getservbyname('rlslider','tcp')))
#        print ret        
        s.send("%d %d %d %d\n" % l)
        s.close()
    except Exception,e:
        print str(e)
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        if ret==111:
            print time.ctime(),"waiting for server"
            time.sleep(3)
        else:
            print time.ctime(),e