title: Disable DTR in pyserial from code
body: <p>I'm trying to use pyserial to send data to an arduino. But when I open the COM port it sets DTR low and resets the board. However, I have my arduino code setup such that I have to put it into serial receive mode by holding two buttons for 1 second. I would rather not have to do the serial input on boot of the arduino, if possible.</p>
  
  <p>Apparently you can modify serialWin32.py file, changing the line that reads:</p>
  
  <pre><code>self._dtrState = win32.DTR_CONTROL_ENABLE
  </code></pre>
  
  <p>to:</p>
  
  <pre><code>self._dtrState = win32.DTR_CONTROL_DISABLE
  </code></pre>
  
  <p>But, is there a way to just disable this directly in my python script? I also need to do this for all systems. I would rather not force people to change their base serial config just to use this script.</p>
  
  <p>The serial port is opened as follows:</p>
  
  <pre><code> com = serial.Serial(port, baud, timeout=1);
  </code></pre>
  
  <p><strong>Update:</strong> In the end I found a solution that works fine for my setup. Since I didn't need to do Serial data all the time, only when I put the device into serial receive mode I found a way to disable the reset on serial connect from the arduino itself. </p>
  
  <p>Many posts have said you can disable DTR reset by placing a ~100 Ohm resistor between 5V and reset. But I didn't want this to be a permanent thing. So, instead I placed a resistor between PD5 and reset. Then, in software:</p>
  
  <pre><code>void setup() {
      //.......
      DDRD &amp;= ~(_BV(PD5)); //Set PD5 as input initially
      PORTD |= (_BV(PD5)); //Set high
      //.......
  }
  
  inline void setResetDisable(bool state)
  {
    if(state)
      DDRD |= (_BV(PD5)); //Set PD5 as output to put 5V on reset line
    else
      DDRD &amp;= ~(_BV(PD5)); //set back to input mode
  }
  </code></pre>
  
  <p>So now, when I want to be in serial mode, I call setResetDisable(true) which throws 5V on that 100 ohm resistor and the reset pin, preventing DTR from pulling it low and resetting the chip :)
  I then just call setResetDisable(false) when I leave serial mode so the chip can be programmed as normal.</p>