Отключить DTR в pyserial из кода

Я пытаюсь использовать pyserial для отправки данных в Arduino. Но когда я открываю COM-порт, он устанавливает низкий уровень DTR и сбрасывает плату. Тем не менее, у меня есть настройки кода Arduino, так что я должен перевести его в режим последовательного приема, удерживая две кнопки в течение 1 секунды. Я бы предпочел не делать последовательный ввод при загрузке Arduino, если это возможно.

Видимо, вы можете изменить файл serialWin32.py, изменив строку, которая гласит:

self._dtrState = win32.DTR_CONTROL_ENABLE

чтобы:

self._dtrState = win32.DTR_CONTROL_DISABLE

Но есть ли способ просто отключить это прямо в моем скрипте Python? Мне также нужно сделать это для всех систем. Я бы не стал заставлять людей менять свой базовый последовательный конфиг только для того, чтобы использовать этот скрипт.

Последовательный порт открывается следующим образом:

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

Обновить: В конце концов я нашел решение, которое отлично работает для моей установки. Так как я неПоследовательные данные нужно выполнять постоянно, только когда я перевел устройство в режим последовательного приема, я нашел способ отключить сброс при последовательном соединении от самого arduino.

Во многих публикациях говорится, что вы можете отключить сброс DTR, поместив резистор ~ 100 Ом между 5 В и сбросом. Но я неЯ не хочу, чтобы это было постоянной вещью. Итак, вместо этого я поместил резистор между PD5 и сбросом. Затем в программном обеспечении:

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
}

Итак, теперь, когда я хочу быть в последовательном режиме, я вызываю setResetDisable (true), который выдает 5 В на резисторе 100 Ом и выводе сброса, не позволяя DTR понижать его и сбрасывать микросхему :) Затем я просто вызываю setResetDisable (false) ) когда я выхожу из последовательного режима, чтобы чип можно было запрограммировать как обычно.

Ответы на вопрос(4)

Ваш ответ на вопрос