Hi,

I'm writing a script to plot data being read from a serial connection in
real time.  I'm trying to use an idle_event callback to continually read the
incoming data and plot it.  The problem is that the callback is only getting
invoked once.  I found this page:
http://www.scipy.org/Cookbook/Matplotlib/Animations, which suggests using
backend-specific stuff.  This is intended to be a quick-and-dirty thing
though so I was really hoping to avoid that.  Here's my code:

def OnIdle(event):
    global xData
    global yData
    data = ReadSerialData()
    if data != None:
        yData.append(data)
        if len(yData) > GRAPH_WINDOW_SIZE:
            del yData[0]
        else:
            xData.append(len(xData))
        line.set_xdata(xData)
        line.set_ydata(yData)
        pylab.draw()
    # end if data != None
# end OnIdle

if __name__ == '__main__':
    pylab.ion()

    fig = pylab.figure()
    ax = fig.add_subplot(1,1,1)
    line = ax.add_line(pylab.Line2D([], []))
    ax.set_ylim(0, 100)
    ax.set_xlim(0, GRAPH_WINDOW_SIZE)
    fig.canvas.mpl_connect('idle_event', OnIdle)

    pylab.show()
# end __name__ == '__main__'

Oh btw, I'm positive that ReadSerialData is not blocking and that it's
making it through the whole idle handler.  I'm running on 64 bit Linux with
Python 2.6.  According to --verbose-helpful, I'm using matplotlib version
0.98.5.2 and GTKAgg version 2.14.1.  Am I doing something wrong or do I
really need to go backend-specific?

Thanks,
Mark
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to