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

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

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

1import serial, sys
2 
3# Set up serial port
4try:
5ser = serial.Serial("/dev/tty.usbserial-A700eRV8", 9600)
6except serial.SerialException:
7sys.exit()
8ser.write('M')
9ser.close()

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

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

Спасибо

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

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

01import serial, sys
02 
03# Set up serial port
04try:
05    ser = serial.Serial("/dev/tty.usbserial-A700eRV8", 9600)
06except serial.SerialException:
07    sys.exit()
08 
09if not ser.isOpen() :
10   ​ser.open()
11 
12ser.write('M')
13 
14if ser.isOpen() :
15   ser.close()

 

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

NeiroN,

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

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

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

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