Files
x07ma/script/Averager.py
2016-03-01 11:31:59 +01:00

64 lines
2.0 KiB
Python

class AveragerSensor(Readable):
def __init__(self, averager, index):
self.averager =averager
self.index =index
def read(self):
return self.averager.values[self.index]
class Averager(ReadonlyRegisterBase, ReadonlyRegisterArray):
def __init__(self, devices = [signal_tey, signal_i0, signal_trans], integration_time=None):
ReadonlyRegisterBase.__init__(self, "Averager")
self.devices = devices
self.integration_time = integration_time
self.initialize()
self.samples = [[],] * len(devices)
self.values = []
def getSize(self):
return len(self.devices)
def doRead(self):
start = time.time()
self.samples = []
print self.getSize()
for i in range(self.getSize()):
self.samples.append([])
print self.samples
values = []
while True:
for i in range (self.getSize()):
v = self.devices[i].read()
print "----------"
print v
print i
print self.samples
print "##########"
self.samples[i].append(v)
print self.samples
print "!!!!!!!!!!!"
if self.integration_time is None or (time.time() - start) >= self.integration_time:
break
print "Resampling"
sleep(0.1)
self.values = []
print "**********"
print self.samples
for i in range (self.getSize()):
self.values.append(mean(self.samples[i]))
return self.values
def getSensor(self, index):
return AveragerSensor(self, index)
def getSensors(self):
ret = []
for i in range (self.getSize()):
ret.append(AveragerSensor(self,i))
return ret
averager = Averager()
tscan ([averager,] + averager.getSensors(), 10, 3.0)