Deshabilitar DTR en pyserial del código

Estoy tratando de usar pyserial para enviar datos a un arduino. Pero cuando abro el puerto COM, se establece DTR bajo y se restablece la placa. Sin embargo, tengo mi configuración de código arduino tal que tengo que ponerlo en modo de recepción en serie manteniendo presionados dos botones durante 1 segundo. Preferiría no tener que hacer la entrada en serie en el arranque del arduino, si es posible.

Aparentemente puedes modificar el archivo serialWin32.py, cambiando la línea que dice:

self._dtrState = win32.DTR_CONTROL_ENABLE

a:

self._dtrState = win32.DTR_CONTROL_DISABLE

Pero, ¿hay una manera de simplemente deshabilitar esto directamente en mi script de python? También necesito hacer esto para todos los sistemas. Preferiría no forzar a las personas a cambiar su configuración serial básica solo para usar este script.

El puerto serie se abre de la siguiente manera:

 com = serial.Serial(port, baud, timeout=1);

Actualizar: Al final encontré una solución que funciona bien para mi configuración. Como no tenía que hacer datos en serie todo el tiempo, solo cuando puse el dispositivo en modo de recepción en serie, encontré una manera de deshabilitar el restablecimiento de la conexión en serie desde el propio arduino.

Muchas publicaciones han dicho que puedes deshabilitar el restablecimiento de DTR colocando una resistencia de ~ 100 Ohm entre 5V y restablecer. Pero no quería que esto fuera algo permanente. Entonces, en lugar de eso, coloqué una resistencia entre PD5 y reinicié. Luego, en el software:

void setup() {
    //.......
    DDRD &= ~(_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 &= ~(_BV(PD5)); //set back to input mode
}

Así que ahora, cuando quiero estar en modo serie, llamo a setResetDisable (verdadero) que lanza 5V en esa resistencia de 100 ohmios y el pin de reinicio, evitando que DTR lo descargue y reinicie el chip :) Luego llamo setResetDisable (falso) ) cuando salgo del modo serie para que el chip pueda programarse como normal.

Respuestas a la pregunta(4)

Su respuesta a la pregunta