W867716395 2017-10-29 05:23 采纳率: 0%
浏览 2020

python读取Arduino数据并绘图,无显示。

以下是我的代码,运行时也没有报错,但没有图形显示出来,怎么回事呢?
import serial, argparse
from collections import deque
import matplotlib.pyplot as plt
import matplotlib.animation as animation
class AnalogPlot:
def init(self, strPort, maxLen):
strPort='COM6'
self.ser = serial.Serial(strPort, 9600)
self.a0Vals = deque([0.0]*maxLen)
self.a1Vals = deque([0.0]*maxLen)
self.maxLen =maxLen
def add(self, data):
assert(len(data)==2)
self.addToDeq(self.a0Vals, data[0])
self.addToDeq(self.a1Vals, data[1])

def addToDeq(self, buf, val):
    buf.pop()
    buf.appendleft(val)
def update(self, frameNum, a0, a1):
    try:
        line=self.ser.readline()
        data=[float(val) for val in line.split]
        if(len(data)==2):
            self.add(data)
            a0.set_data(range(self.maxLen), self.a0Vals)
            a1.set_data(range(self.maxLen), self.a1Vals)
    except:
        pass
    return a0, a1
def close(self):
    self.ser.flush()
    self.ser.close()

def main():
parser= argparse.ArgumentParser(description="LDR serial")
parser.add_argument('--port', dest='port', required=True)
parser.add_argument('--N', dest='maxLen', required=False)
args=parser.parse_args()
strPort=args.port

print('reading from serial port %s...' %strPort)

maxLen=100
if args.maxLen:
    maxLen=int(args.maxLen)
analogPlot=AnalogPlot(strPort, maxLen)

print('plotting data...')

fig=plt.figure()
ax=plt.axes(xlim=(0,maxLen),ylim=(0, 1023))
a0,=ax.plot([],[])
a1,=ax.plot([],[])
anim=animation.FuncAnimation(fig, analogPlot.update,fargs=(a0,a1),interval=20)

plt.show()

analogPlot.close()

print("exiting.")

if name=='_main_':
main()

  • 写回答

1条回答

  • threenewbee 2017-10-29 08:45
    关注

    这个你可以分两步调试,一个是数据有没有正常接收,一个是python画图有没有问题。
    比如说,先不接收数据,而是用静态的数据,能不能出图像。如果可以,再排查数据接收的代码。否则排查画图的代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作