2014-01-15 74 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 

你必須要經歷的整個過程(openfconfigure和可選地spawn -open)再次重新連接。你可能想重構一個過程...

+0

我已經使用過這個功能,但仍然無法重新連接。它會說它找不到com#。腳本的目的是讓我可以連接到設備,進行通信,允許設備關閉,從COM端口斷開連接,然後再次重新連接並進行通信。 – user2471323

+0

我認爲可能發生的情況是,當我使用exec時,我已經使用「source」來「運行」與設備通信的腳本。這可能是問題發生的地方。 – user2471323