如何在Python中精确采样传感器信号

时间:2019-02-18 13:59:06

标签: python

我想编写一个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()的调用进行访问。

先谢谢您了:)

1 个答案:

答案 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))

这只是一个例子。您需要根据需要进行更改。