Mercurial > code > home > repos > light9
view light8/potserver.py @ 134:f2f73a2171e6
many adjustments to the loops and timing
many adjustments to the loops and timing
now sends the hardware updates only when clients change, but at least 1Hz
new option to adjust the rate of the loop that considers sending changes (if
the lights have changed)
author | drewp |
---|---|
date | Sat, 14 Jun 2003 14:59:09 +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