我正在尝试使用 python-can 和 matplotlib 库绘制 can-data。我有一个关于如何使用 matplotlib 绘制实时数据的基本示例:
import numpy as np
import matplotlib.pyplot as plt
plt.axis([0, 10, 0, 1])
for i in range(10):
y = np.random.random()
plt.scatter(i, y)
# plt.pause(0.05)
plt.draw()
plt.show()
我使用了一个基本的 python-can 示例并添加了 matplotlib:
import sys
import argparse
import socket
from datetime import datetime
import can
from can import Bus, BusState, Logger
import numpy as np
import matplotlib.pyplot as plt
def main():
plt.axis([0, 10, 0, 1])
bus = Bus(bustype ='pcan')
i = 0
print(f"Connected to {bus.__class__.__name__}: {bus.channel_info}")
print(f"Can Logger (Started on {datetime.now()})")
plt.show()
try:
while True:
msg = bus.recv(1)
if msg is not None:
y = np.random.random()
plt.scatter(i, y)
plt.draw()
i += 1
print('Message id {id}'.format(id=msg.arbitration_id))
except KeyboardInterrupt:
pass
finally:
plt.show()
bus.shutdown()
if __name__ == "__main__":
main()
但是,一旦我添加 plt 命令,脚本就会停止工作,它就不再输出打印语句了。当我调试它并手动执行它时。有什么我做错了吗?有没有更好的方法来解决这个问题?我没有设置 matplotlib,只是绘制某些东西的最快方法:)