view light8/potserver.py @ 2405:69ca2b2fc133

overcomplicated attempt at persisting the pane layout in the rdf graph this was hard because we have to somehow wait for the graph to load before config'ing the panes
author drewp@bigasterisk.com
date Fri, 17 May 2024 16:58:26 -0700
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