Python и serial port - странное поведение

george
Offline
Зарегистрирован: 09.12.2014

Подскажите пожалуйста, пишу следующий код на питоне:

import serial, sys 

# Set up serial port
try:
ser = serial.Serial("/dev/tty.usbserial-A700eRV8", 9600)
except serial.SerialException:
sys.exit()
ser.write('M')
ser.close()

На ардуино должен загораться светодиод при принятии "М". Работает, но следующим образом:
Как только открываю монитор порта (который встроен в ide Arduino), и исполняю скрипт питоновский еще раз - он начинает работать. Как только монитор порта закрываю, так перестает скрипт работать. Ощущение, что что-то мешает установить связь по последовательному порту когда монитор закрыт.

Какие могут быть причины? Может кто сталкивался с проблемой и знает как ее исправить?

Спасибо

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Вы кажется забыли выполнить ser.open(), посмотрите примеры еще раз более внимательно.

import serial, sys 

# Set up serial port
try:
    ser = serial.Serial("/dev/tty.usbserial-A700eRV8", 9600)
except serial.SerialException:
    sys.exit()

if not ser.isOpen() :
   ​ser.open()

ser.write('M')

if ser.isOpen() :
   ser.close()

 

george
Offline
Зарегистрирован: 09.12.2014

NeiroN,

в первую очередь спасибо за помощь! Но к сожалению, все равно проблема не исчезла. Стоит мне только закрыть монитор порта и попробовать выполнить скрипт еще раз - я вижу лишь моргание светодида и все. Запускаю монитор, выполняю скрипт - вижу в мониторе передачу данных, светодиод горит постоянно (как и должен)

george
Offline
Зарегистрирован: 09.12.2014

Проблему решил следующим образом:

    ser = serial.Serial("/dev/tty.usbserial-A700eRV8", 9600)
    ser.setDTR(False)
    time.sleep(1.5)