我正在尝试使用串口和matplotlib绘制arduino发送的一些数据。我完成了这个,我可以用maptplolib数字绘制数据。
这是我的代码:
class ViewWidget(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
layout = QVBoxLayout()
self.mainWidget.setLayout(layout)
self.figure_canvas = FigureCanvas(Figure())
layout.addWidget(self.figure_canvas, 10)
self.axes = self.figure_canvas.figure.add_subplot(111)
self.x = []
def Data(self):
print "Opening port"
port = "com4"
arduinoData = serial.Serial(port, 9600)
ViewWidget.list_of_ports.append(arduinoData)
while True:
if arduinoData.inWaiting()>0:
arduinoString = arduinoData.read(arduinoData.inWaiting())
ardString = map(ord, arduinoString)
for number in ardString:
numb = float(number/77.57)
self.x.append(numb)
drawnow(self.makeFig)
if len(self.x)>50:
self.x.pop(0)
else:
print "There is no data"
def makeFig(self):
self.axes.plot(self.x, picker = 5)
self.figure_canvas.draw()
问题在于,当它开始在绘图中绘制数据时,几秒钟后,它开始显示重叠点,经过短暂的时间后,它会崩溃并停止绘制,如下所示:
我认为当我使用self.x.pop(0)
行时会出现问题,但我不知道为什么。
我做错了什么?问题可能是drawnow
模块吗?。希望你能帮助我。