如果有人询问我,我很抱歉,我做了搜索 . 我正在尝试使用expect编写一些串口操作的脚本,并且我很惊讶spawn_id意外消失了 . 信息 . 是; spawn id exp10未打开 . 我会尝试保持这个简短,但有足够的信息可能的答案,脚本如下(混合实际的语句/伪代码):

set comId [openSerial $ baud $ dev]($ baud设置为115200,$ dev设置为/ dev / ttyUSB0)

在openSerial中:

set portId [open $dev RDWR]
if 'catch' fconfigure the port for mode(typical), handshake(none), blocking(0), buffering(none) 'error'
return 0
else
spawn -open $portId -noecho
return $spawn_id

到现在为止还挺好 . 回到我称为openSerial的主脚本中,我睡5秒并放入spawn id,$ comId,显示为exp10 . 那么我调用我的测试过程没有任何参数 . 里面看起来像:

proc test {} {
expect {
  "string to wait for" { puts "got it"
                         expect "next string to wait for"
                         puts "got it"
                         expect "final string"
                         puts "got it"
                         return }
  timeout { do stuff if timed out }
  }
}

我得到第一个和第二个预期输出,然后期望返回spawn_id exp10未打开 . 为什么它会在跑步中消失?期望书与串口通信没什么关系,所以我现在不知所措 . 如果有人读到这个并且有答案,我会很感激 . 在此期间,我将继续进行实验 .

高手