Отключить 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) ) когда я выхожу из последовательного режима, чтобы чип можно было запрограммировать как обычно.