我通过串行从Python向Arduino发送数据,我有两段代码可以单独正常工作:
- 第一部分生成新的数据,并在每次按回车键时使用matplotlib绘制它。
- 第二块生成新数据,并在我每次按回车键时通过串行端口(使用
with serial.Serial
)发送它。
当我合并这两个部分,生成新数据,绘制它,并在每次按回车键时发送它,数据仍然发送正常,但matplotlib图保持空白,直到我终止代码,此时它绘制最后一组生成的数据。有没有一种方法可以同时做所有这些事情?下面包含的代码(为了清楚起见,我将所有的数据生成代码替换为对np.random的调用)。
import matplotlib.pyplot as plt
import numpy as np
import serial
with serial.Serial(port='COM7', baudrate=115200, timeout=0.5) as arduino:
# Initialize figure
fig, ax = plt.subplots()
while True:
# Clear axes and wait for user go-ahead
ax.cla()
command = input()
if command == 'x':
break
# Generate data and plot
data = np.random.rand(6)
ax.plot(data)
# Send data to arduino and read back response
for val in data:
arduino.write(str(val).encode())
arduino.write('\n'.encode())
for i in range(data.size):
received_data = arduino.readline()
print(received_data.decode('utf-8').strip())
字符串
1条答案
按热度按时间8e2ybdfx1#
尝试调用
plt.ion()
以确保matplotlib处于交互模式这应该确保图形在显示后不会阻塞,并且可以立即绘制更改。