【发布时间】:2019-08-29 08:01:19
【问题描述】:
我有一个传感器,它每秒提供近 500 次数据,我已连接到 Arduino,我正在使用 Python 读取数据,因为我将在下一步处理它。
我尝试使用来自 Matplolib 的 FuncAnimation。
这是动画函数:
def animate(i):
global data
# Data comes as one sample per line
char = ''
res = ''
while char != b'\n':
char = s.read()
res += char.decode("utf-8")
res = res[:-1] # To remove a \r added by arduino
data = data[1:] + [float(res)]
ax.set_ylim(min(data), max(data))
line.set_ydata(data)
return line,
我正在计算使用此代码获取单个值的大致时间:
start = datetime.datetime.now()
while count < 1000:
char = s.read()
if char == b'\n':
count += 1
print(count)
end = datetime.datetime.now()
T = ((end - start).total_seconds()) / 1000
最后将动画初始化为:
ani = animation.FuncAnimation(fig, animate, interval=T * 1000, blit=False)
当我在 Arduino 上平均大约五个值然后绘图时,它工作正常,它工作但当我全速运行它时 python 崩溃,这让我相信问题与速度有关。此外,即使我对这些值进行平均,情节也落后于实际行动约 5 秒。
如何实时绘制所有值?
【问题讨论】:
标签: python matplotlib real-time