Tcl 连接/断开与COM端口的连接

Tcl 连接/断开与COM端口的连接,tcl,expect,kill,spawn,Tcl,Expect,Kill,Spawn,似乎无法正确断开与正在使用的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"

似乎无法正确断开与正在使用的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 

要断开与串行端口的连接,必须关闭通道(因为这会转换为关闭底层OS文件描述符)。因为您已将其附加到expect spawn_id(生成
的结果)上,所以您必须关闭它。您可以通过以下方式实现:

close -i $spawn_id
但是,如果一次只生成一个对象,则可以:

close

您必须再次完成整个过程(
open
fconfigure
和可选的
spawn-open
)才能重新连接。你可能想把它重构成一个过程…

问题是我本应该使用exec的时候,却在使用“source”来运行我的其他tcl脚本。现在我可以让我的设备关闭,然后再打开并再次通信

我用过这个,但它仍然无法重新连接。它会说它找不到com。脚本的目的是让我可以连接到设备,通信,允许设备关闭,断开com端口,然后重新连接并再次通信。我认为可能发生的情况是,我使用“源”来“运行”我的脚本,这些脚本在我应该使用exec时与设备通信。这可能就是问题所在。