【问题标题】:Connecting/disconnecting to COM port expect连接/断开 COM 端口期望
【发布时间】:2014-01-15 15:10:19
【问题描述】:

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

【问题讨论】:

    标签: tcl expect kill spawn


    【解决方案1】:

    要断开与串行端口的连接,您必须关闭通道(因为这会转换为底层 OS 文件描述符的关闭)。因为您已将其附加到期望 spawn_id(spawn 的结果),所以您必须关闭它。你这样做:

    close -i $spawn_id
    

    虽然如果你一次只生成一个东西,你可以:

    close
    

    您必须再次完成整个过程(open、fconfigure 和可选的spawn -open)才能重新连接。您可能希望将其重构为一个过程......

    【讨论】:

    • 我用过这个,但重新连接还是有问题。它会说它找不到 com#。该脚本的目的是让我可以连接到设备,进行通信,允许设备关闭,断开与 com 端口的连接,然后重新连接并再次通信。
    • 我认为可能发生的情况是,当我应该使用 exec 时,我使用了“源”来“运行”与设备通信的脚本。这可能就是问题所在。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多