Pylab and pyserial plot in real time

googlinggoogler at hotmail.com googlinggoogler at hotmail.com
Sun Nov 6 22:56:25 CET 2005


Yea I know the data is correct, all I do is sample my data with an ADC
and then send it to the serial port. using hyper terminal or indeed
pyserial presents the data as a ASCII charecters, the value of these
Charecters is the converted to there equivalent decimal value using the
ord() command.

Basically the code was supposed to get the values from the serial port,
place them in some sort of FIFO buffer with no limits on size and then
plot the values each time a new value is recieved, constantly updating
and presented near enough the graph of the current events.

I can't actually get to the computer with the hardware setup on so i
can't test the ideas you had, however I will do so tommmorw and report
back...

Im pretty certain however that its the plotting aspect of my routine
that doesnt work as I have mucked around with the data fed from the
serial port and its OK, for instance the sensor placed in an oven that
has been heated and dried for hours presnets a value a lot less than
that of the sensor placed in the spout of a boiling kettle - so the
values here are ok for my purposes.

thanks for the clues. wish there was a pylab expert around here as my
example is copied from there tutorial, maybe I need to destory the
window on each iteration or something?

Does anyone know of a module designed for ploting real time data thats
more appropriate for the above mentioned task than pylab??

thanks

David






Peter Hansen wrote:
> googlinggoogler at hotmail.com wrote:
> > I've got a PIC microcontroller reading me humidity data via rs232, this
> > is in ASCII format.
>
> What do you mean when you say it's in ASCII format?  ASCII defines a
> convention for representing control and printable characters.  Do you
> mean that the readings you get are shown in hyperterminal as numbers
> such as "101"?  Or something else?
>
> > I can view this data easily using hyperterminal or
> > pyserial and convert it to its value (relative humidty with ord(input))
>
> Okay, since you don't show examples, we'll have to assume you know what
> you're doing there...
>
> > My code is below, it doesnt show a graph, I was wondering whether
> > someone could suggest whats wrong?
>
> What does it do?  What does it do if you put a print statement after the
> ord() line?  Maybe try "print repr(s), b"...
>
> > while 1:
> > 	s = ser.read()
> > 	b = ord(s)
> > 	h = []
> > 	h.append(b)
> > 	x = x + 1
> > 	plot(t,h)
> >
> > ser.close
>
> Note that the last line is incorrect: it should be ser.close().  Without
> the parentheses it just creates a temporary reference to the method,
> then discards it.  (Of course, this isn't what's stopping your code from
> working.)
>
> You haven't provided us much detail, but what happens if you change the
> line that reads from the serial port to the following?
>
>       s = '5'
>
> This, of course, will partition the problem, showing you whether the
> problem is with the serial reading or with the plotting.  If it's still
> not plotting, you can assume you have missed a critical step in using
> pylab and you should probably go back a step and make sure you can run
> whatever tutorial or example code is included with pylab.  (This is the
> first I've heard of pylab, so I can't help you there.)
> 
> -Peter




More information about the Python-list mailing list