从串行端口

时间:2016-04-26 13:44:56

标签: python matplotlib serial-port

我正在尝试使用串口和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()

问题在于,当它开始在绘图中绘制数据时,几秒钟后,它开始显示重叠点,经过短暂的时间后,它会崩溃并停止绘制,如下所示:

enter image description here

我认为当我使用self.x.pop(0)行时会出现问题,但我不知道为什么。

我做错了什么?问题可能是drawnow模块吗?。希望你能帮助我。

0 个答案:

没有答案
相关问题