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个回答

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

W867716395
W867716395 ok,我可以试一下,谢谢
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐