title: Reading serial data from Arduino project (pySerial)
body: <p>I'm doing a test project with Raspberry pi and Arduino shield over it (Alamode).
  I've started out with basic attempt to ready details over pySerial link, just to see i'm getting the right output before i continue to the next step, </p>
  
  <p>Unfortunately, it didn't go as smooth as i had hopped. </p>
  
  <p>The project compiles just fine for the Arduino and when looking at the serial monitor i can see the output going out normally, then - as soon as i start the pySerial script i start to get missing chars, digits and halting of the script (claiming the serial link doesn't respond).</p>
  
  <p>The serial link carries over just fine, i've confirmed it several times and the serial monitor keeps on showing me live data.</p>
  
  <p>But for some reason it seems that the python script can't "time" or "sync" with the serial output, so it would randomly cut letters and chars.</p>
  
  <p>I've already tried changing the delay (giving it more time) or changing the baud rate and it didn't seems to help, i'm one step closer to giving up and check an alternative solution.</p>
  
  <p>This is the basic Arduino code</p>
  
  <pre><code>// Example testing sketch for various DHT humidity/temperature sensors
  // Written by ladyada, public domain
  
  #include "DHT.h"
  
  #define DHTPIN 2     // what pin we're connected to
  
  // Uncomment whatever type you're using!
  #define DHTTYPE DHT11   // DHT 11 
  //#define DHTTYPE DHT22   // DHT 22  (AM2302)
  //#define DHTTYPE DHT21   // DHT 21 (AM2301)
  
  // Connect pin 1 (on the left) of the sensor to +5V
  // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
  // to 3.3V instead of 5V!
  // Connect pin 2 of the sensor to whatever your DHTPIN is
  // Connect pin 4 (on the right) of the sensor to GROUND
  // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
  
  // Initialize DHT sensor for normal 16mhz Arduino
  DHT dht(DHTPIN, DHTTYPE);
  // NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
  // might need to increase the threshold for cycle counts considered a 1 or 0.
  // You can do this by passing a 3rd parameter for this threshold.  It's a bit
  // of fiddling to find the right value, but in general the faster the CPU the
  // higher the value.  The default for a 16mhz AVR is a value of 6.  For an
  // Arduino Due that runs at 84mhz a value of 30 works.
  // Example to initialize DHT sensor for Arduino Due:
  //DHT dht(DHTPIN, DHTTYPE, 30);
  
  void setup() {
    Serial.begin(115200); 
    Serial.println("DHTxx test!");
  
    dht.begin();
  }
  
  void loop() {
    // Wait a few seconds between measurements.
    delay(2000);
  
    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    // Read temperature as Celsius
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit
  
    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
      return;
    }
  
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" ");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" ");
  }
  </code></pre>
  
  <p>And this is the basic script for PySerial</p>
  
  <pre><code>from time import sleep
  import serial
  ser = serial.Serial('/dev/ttyS0',115200)
  counter=32
  while True:
      ser.write(str(chr(counter)))
      print ser.readline(16384)
      sleep(.1)
  </code></pre>