def pollData(self):
"""Poll for new data. This method sleeps in order to ensure
that self.pollSize observations are generated at a realistic rate.
"""
# figure time between polls using exponentially weighted moving average
curTime = time.time()
if self.pollDelay >= 0.0:
self.pollDelay = 0.8*self.pollDelay + 0.2*(curTime - self.lastPollTime)
else:
self.pollDelay = 0.0
self.lastPollTime = curTime - self.shift
sleepTime = np.max((0.0, self.shift - self.pollDelay))
self.lastPollTime = curTime + sleepTime
time.sleep(sleepTime)
with self.lock:
# generate some random data
data = np.random.uniform(-self.scale.value, self.scale.value,
size=(self.pollSize,self.nChan))
erpEnd = self.erpStart.value +\
self.erpSpeed.value *\
data.shape[0]/float(self.sampRate)
erp = np.linspace(self.erpStart.value, erpEnd, data.shape[0])
erp = np.repeat(erp, data.shape[1]).reshape((-1,data.shape[1]))
erp = erp * 0.5*(np.arange(data.shape[1])+1.0)
erp = np.sinc(erp)
data += erp
self.erpStart.value = erpEnd
return data
评论列表
文章目录