64 lines
2.0 KiB
Python
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)
|
|
|