view light8/ExternalInput.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 d6c48d2d3bd6
children
line wrap: on
line source

import thread, SocketServer, socket


currentlevels = [0,0,0,0]


class NetSliderHandler(SocketServer.StreamRequestHandler):
    def handle(self):
        data = self.rfile.readline(1000)
        currentlevels[:] = [round(self.bounds(float(x)/255),3) for x in list(data.split())]
    def bounds(self,x):
        # the last .1 both ways shall not do anything
        x=x*1.1-.05
        x=min(1,max(0,x))
        return x

def start_server(levelstorage=0):
    server = SocketServer.TCPServer(
        ('', socket.getservbyname('rlslider', 'tcp')), 
        NetSliderHandler)
    server.serve_forever()

class ExternalSliders:
    def __init__(self, level_storage=[]):
        self.level_storage = level_storage
        self.spawn_server()
    def test(self):
        'Store fake inputs to test operations'
        pass
    def spawn_server(self):
        pass
        # thread.start_new_thread(start_server, (self.update))
    def update(self, *args):
        self.level_storage[:] = args
    def get_levels(self):
        return currentlevels
#        import math, time
#        return [max(0, math.sin(time.time() + i)) for i in range(4)] # bogus
            
        # return self.level_storage