2014-01-15 2 views
1

Невозможно правильно отключиться от используемого COM-порта и завершить порожденный процесс. Мне нужно отключиться от COM-порта, а затем снова подключиться.Ожидание подключения/разъединения к COM-порту

# Read the COM port from the command line 
if { $argc >= 1 } { 

    set file [lindex $::argv 0] 
} else { 

    set file /dev/ttyUSB0 
} 

set fh [open $file RDWR] 

fconfigure $fh -mode "115200,n,8,1" -blocking 0 -buffering none -eofchar {} 
spawn -open $fh -noecho 

ответ

0

Проблема заключалась в том, что я использовал «источник» для запуска других сценариев tcl, когда я должен был использовать exec. Теперь я могу позволить моему устройству отключиться, затем снова вернуться и снова связаться.

0

Для отключения от последовательного порта, вы должны закрыть канал (потому что приводит к завершению на основной дескриптор файла операционной системы). Поскольку вы привязали его к ожиданию spawn_id (результат spawn), вы должны закрыть это. Вы делаете это с:

close -i $spawn_id 

Хотя, если у вас есть только одна вещь, которую породил в то время, вы можете просто:

close 

Вам придется пройти через весь процесс (open, fconfigure и необязательно spawn -open), чтобы снова подключиться. Возможно, вы захотите реорганизовать это в процедуру ...

+0

Я использовал это, но у него все еще возникают проблемы с повторным подключением. Он скажет, что он не может найти com #. Назначение сценария заключается в том, что я могу подключиться к устройству, обмениваться данными, разрешить устройству отключиться, отключиться от COM-порта, а затем снова подключиться и установить связь. – user2471323

+0

Я думаю, что может произойти, что я использовал «источник» для «запуска» моих сценариев, которые обмениваются данными с устройством, когда я должен был использовать exec. Это может быть проблема. – user2471323

Смежные вопросы