W867716395
2017-10-29 05:23python读取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条回答
为你推荐
- Arduino 串口接收转发十六进制数据,软串口收不到数据
- 中文分词
- 3个回答
- wemos d1(作为客户端)和网络服务器(在arduino或wemos d1上)通过LAN [关闭]之间的通信
- http
- arduino
- c++
- php
- 1个回答
- 用于控制Arduino的PHP站点在网页加载时发送代码
- arduino
- php
- 1个回答
- arduino使用esp8266上传温湿度数据到新浪云上,并接收新浪云的信息,萌新求助
- 新浪
- esp8266
- arduino
- 微信
- 1个回答
- 请问下arduion板子上的传感器发送数据是怎么发送的
- arduino教程
- 通讯
- 1个回答