这是一个非常奇怪的问题,其中一件事似乎影响了另一件完全不同的事情。
我有一个外部设备(通过COM端口连接),不断发送传感器的值(10位传感器= 0-1023)。
我正在编写的代码获取此数据并将其绘制在图表中。
目前底部有一行注释掉(plt.draw()
)。像这样,图表显然没有正确绘制。但是在这种状态下,来自串口的输入很好,就像你期望的那样。
当您取消注释该行以允许绘制图表时,会出现问题。当你这样做时,突然,输入只是一个看似随机的值,并没有按预期变化。打印此随机值并将其记录在图表上。
这是代码。
import serial
import matplotlib.pyplot as plt
from collections import deque
size=50
plt.ion()
q=deque([0]*size)
ser=serial.Serial('COM3',57600)
lastbyte=None
line,= plt.plot(range(0,size),list(q))
if ser.isOpen():
while True:
x=ser.readline()
try:
x=int(x)
except ValueError:
x=0
if x!=lastbyte:
print x,
lastbyte=x
q.append(x)
q.popleft()
d=list(q)
plt.axis([size,0,0,1024])
line.set_ydata(d[::-1])
# plt.draw() THIS LINE
ser.close()
plt.ioff()
那么我使用matplotlib的方式有什么可以搞砸输入?
我已经用不同的方式测试了这一点,以获取和处理数据,但它始终归结为plt.draw()
弄乱它。
答案 0 :(得分:0)
在几乎放弃之后,问题已经解决了!
我注意到外部设备发送数据的速度比我的程序收到的速度快,并且在修复之后,它确实有效!
魔术!