title: Problem reading data from serial port in python
body: <p>I have a python program that is trying to read 14 bytes from a serial port that
  are arriving very slowly.  I want want to capture all of the bytes in a
  bytearray[14].  I understand there are new byte array features in python 3.0, but
  I'm only running python 2.6.6.  Upgrading may have unexpected consequences so I have to
  stick with 2.6.6.</p>
  
  <p>Data only intermittently flows over the serial port. I get one message on the
  port maybe every 2 minutes or so.  This data flows very slowly.  The problem I am seeing is
  that my code does not relaibly read the data one byte at a time.   I want to frame this
  data at exactly 14 bytes, then process the data and start fresh with a new 14
  bytes.  </p>
  
  <p>Am I taking the wrong approach here? Advice?</p>
  
  <pre><code>    ser = serial.Serial('/dev/ttyUSB1', 1200, timeout=0)
      ser.open()
      print "connected to: " + ser.portstr
      count=0
      while True:
          line =ser.readline(size=14) # should block, not take anything less than 14 bytes
          if line:
              # Here I want to process 14 bytes worth of data and have
              # the data be consistent.
              print "line(" + str(count) + ")=" + line
              count=count+1
      ser.close()
  </code></pre>
  
  <p>Here's what I'm expecting: line(1)=� 0~ 888.ABC�    /ends in carriage return</p>
  
  <p>----------begin output------</p>
  
  <pre><code>line(0)=0
  line(1)=~ ??1. ABC �    # here get some multiple bytes and stuff gets out of synch
  
  �ine(2)=
  line(3)=0
  line(4)=~
  line(5)= 
  line(6)=8
  line(7)=8
  line(8)=8
  line(9)=.
  line(10)= 
  line(11)=A
  line(12)=B
  line(13)=C
  line(14)= 
  line(15)=�
  line(16)=
  
  #...
  line(48)=
  line(49)=�
  line(50)=0
  line(51)=~
  line(52)= 
  line(53)=8
  line(54)=8
  line(55)=8
  line(56)=.
  line(57)= 
  line(58)=A
  line(59)=B
  line(60)=C
  line(61)= 
  line(62)=�
  line(63)=
  
  line(64)=
  </code></pre>
  
  <p>----------end output------</p>