我正在编写一个期望脚本来通过 /dev/ttyUSB0 将 Forth 源文件上传到微控制器。
我的目标是将“ok”提示变为绿色,将“Redefine”变为黄色并在出现“未找到”等错误时退出。
我遇到的问题是字符发送得太快。我知道我可以使用这样的延迟:
set send_slow {1 .1}
但这不是最优的。是否有一个选项可以检查一个字符是否被回显,同时允许一些额外的反馈,比如 ok 提示?这是我的脚本的开始:
set dev [lindex $argv 0]
set portId [open $dev RDWR]
spawn -open $portId -noecho
set send_slow {1 .1}
for {set i 1} {$i < $argc} {incr i 1} {
set filename [lindex $argv $i]
set fd [open $filename r]
set forth_src [read $fd]
puts "Uploading $filename"
set lines [split $forth_src "\n"]
send -s "\r\n\r\n"
set lines [split $forth_src "\n"]
foreach line $lines {
send -s $line
send -s "\r\n"
expect {
"ok." { }
"not found." { exit }
timeout { exit }
}
}
}