Tcl 连接/断开与COM端口的连接
似乎无法正确断开与正在使用的com端口的连接并结束生成的进程。我需要断开与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"
# 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时与设备通信。这可能就是问题所在。