我正在编写一个期望脚本,通过/ dev / ttyUSB0将Forth源文件上传到微控制器。
我的目标是为"确定"提示绿色,"重新定义"黄色并退出错误,例如"未找到"。
我遇到的问题是发送的字符过快。我知道我可以使用这样的延迟:
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 }
}
}
}