我想编写一个Python程序,该程序将以固定的采样率对传感器进行采样。有什么优雅的方法吗?
当前,我正在使用time.time和time.sleep命令手动执行此操作。虽然这确实有效,但会产生很小的漂移。另外,这似乎不是一个很好的方法,我希望有更多的pythonic方法可以做到这一点:
def mock_signal(x):
# Just a random number as the sensor signal
return np.random.random()*x
def sampling(fs=1, x=1):
T = 1/fs # sampling period
t_ground = time.time()
while True:
t_start = time.time()
y = mock_signal(x)
print('%.5f | Sensor Value %.2f' % (t_start - t_ground, y))
t_duration = time.time()
# Sleeping for the remaining period
time.sleep(T - (t_duration-t_start))
理想情况下,我希望有一个对传感器进行采样的函数或类(基本上称为“ mock_signal”函数)并将新的采样附加到列表或数组中。所述数组中的最新条目应该可以通过类似于multiprocessings Connection.recv()的调用进行访问。
先谢谢您了:)
答案 0 :(得分:0)
希望您可以尝试类似的事情。
import threading
t_ground = time.time()
def sampling():
t_ground = time.time()
threading.Timer(T, sampling).start()
t_start = time.time()
y = mock_signal(1)
print('%.5f | Sensor Value %.2f' % (t_start - t_ground, y))
这只是一个例子。您需要根据需要进行更改。