Parsing a serial stream too slowly
Jerry Hill
malaclypse2 at gmail.com
Mon Jan 23 16:54:17 EST 2012
On Mon, Jan 23, 2012 at 4:48 PM, M.Pekala <mcdpekala at gmail.com> wrote:
> Hello, I am having some trouble with a serial stream on a project I am
> When one sensor is running my python script grabs the data just fine,
> removes the formatting, and throws it into a text control box. However
> when 3 or more sensors are running, I get output like the following:
>
> Sensor 1: 373
> Sensor 2: 112$$M-160$G373
> Sensor 3: 763$$A892$
>
> I am fairly certain this means that my code is running too slow to
> catch all the '$' markers. Below is the snippet of code I believe is
> the cause of this problem...
>
That doesn't sound right. Being too slow seems unlikely to produce the
wrong data...
def OnSerialRead(self, event):
> text = event.data
> self.sensorabuffer = self.sensorabuffer + text
> self.sensorbbuffer = self.sensorbbuffer + text
> self.sensorcbuffer = self.sensorcbuffer + text
>
> if sensoraenable:
> sensorresult = re.search(r'\$A.*\$.*', self.sensorabuffer )
>
Here, you search in sensorabuffer (which, by the way, would be much more
readable to me as sensor_a_buffer, as recommended by the PEP 8 style guide).
> if sensorbenable:
> sensorresult = re.search(r'\$A.*\$.*', self.sensorbenable)
>
here, you're not searching in the buffer, but in the enable flag.
> if sensorcenable:
> sensorresult = re.search(r'\$A.*\$.*', self.sensorcenable)
>
And here too.
Does that fix the problem?
--
Jerry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120123/34fda494/attachment-0001.html>
More information about the Python-list
mailing list