Script execution
This commit is contained in:
51
script/Accumulator.py
Normal file
51
script/Accumulator.py
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
class AccumulatorSensor(Readable):
|
||||
def __init__(self, averager, index):
|
||||
self.averager =averager
|
||||
self.index =index
|
||||
|
||||
def read(self):
|
||||
return self.averager.values[self.index]
|
||||
|
||||
class Accumulator(ReadonlyRegisterBase, ReadonlyRegisterArray):
|
||||
def __init__(self, devices, 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 = []
|
||||
for i in range(self.getSize()):
|
||||
self.samples.append([])
|
||||
values = []
|
||||
while True:
|
||||
for i in range (self.getSize()):
|
||||
v = self.devices[i].read()
|
||||
self.samples[i].append(v)
|
||||
if self.integration_time is None or (time.time() - start) >= self.integration_time:
|
||||
break
|
||||
sleep(0.1)
|
||||
self.values = []
|
||||
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
|
||||
|
||||
#acc = Accumulator([signal_tey, signal_i0, signal_trans], integration_time = 0.5)
|
||||
#tscan ([acc,] + acc.getSensors(), 10, 3.0)
|
||||
|
||||
Reference in New Issue
Block a user