我正在从串行端口(传感器数据,y)读取,并希望将其与时间(x)进行比较。我使用系统时间来计算经过的时间。来自传感器的读数没有滞后。但是我绘制它的方式会引入几秒钟的滞后,因此它落后于传感器的实际状态(因此不能作为实时数据接受)。请帮助我学习如何在此处更好地绘制 x,y 数据。提前感谢!
import serial
import time
import matplotlib.pyplot as plt
start = time.time()
x = []
y = []
ser = serial.Serial('COM6', 2000000, timeout=0)
time.sleep(2)
fig = plt.figure()
plt.ion() # turn on interactive mode
fig.canvas.draw()
plt.sw(block=False)
while True:
line = ser.readline() # read a byte
if line:
string = line.decode() # convert the byte string to a unicode string
#num = re.findall(r"[-+]?\d*\.\d+|\d+", string)
num = float(string)
end = time.time()
y.append(num)
time_elapsed= end - start
x.append(time_elapsed)
plt.cla()
plt.plot(x, y, 'red')
plt.pause(0.05)
plt.draw()
我对 pyserial 也有同样的问题。这是ser.readline
缓慢。请尝试使用ser.read(ser.in_waiting)
。以前的延迟大约是 20s,现在下降到 & lt;2s。Here是上一个问题的答案,以供参考
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(43条)