Desativar o DTR no pyserial do código

Estou tentando usar o pyserial para enviar dados para um arduino. Mas quando eu abro a porta COM, ela define o DTR baixo e redefine a placa. No entanto, eu tenho a minha configuração de código arduino de tal forma que eu tenho que colocá-lo em modo de recebimento serial, segurando dois botões por 1 segundo. Eu prefiro não ter que fazer a entrada serial na inicialização do arduino, se possível.

Aparentemente você pode modificar o arquivo serialWin32.py, mudando a linha que diz:

self._dtrState = win32.DTR_CONTROL_ENABLE

para:

self._dtrState = win32.DTR_CONTROL_DISABLE

Mas, existe uma maneira de desabilitar isso diretamente no meu script python? Eu também preciso fazer isso para todos os sistemas. Eu preferiria não forçar as pessoas a alterarem a configuração serial básica apenas para usar esse script.

A porta serial é aberta da seguinte maneira:

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

Atualizar: No final, encontrei uma solução que funciona bem para minha configuração. Como eu não precisava fazer dados Serial o tempo todo, apenas quando eu colocava o dispositivo no modo de recepção serial eu encontrei uma maneira de desabilitar o reset na conexão serial do próprio arduino.

Muitos posts disseram que você pode desabilitar o reset do DTR colocando um resistor de ~ 100 Ohm entre 5V e reset. Mas eu não queria que isso fosse uma coisa permanente. Então, coloquei um resistor entre PD5 e reset. Então, no 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
}

Então, agora, quando eu quero estar em modo serial, eu chamo setResetDisable (true) que lança 5V naquele resistor de 100 ohms e o pino de reset, evitando que o DTR diminua e reconfigure o chip :) Eu apenas chamo setResetDisable (false ) quando saio do modo serial, o chip pode ser programado como normal.

questionAnswers(4)

yourAnswerToTheQuestion