问题描述
我正在尝试编写一个宏来加快测试的设置。
我要做的是向我的板子发送一堆配置命令,然后在每个命令之后等待“确定”。最后一个命令是开始测试的命令,之后我想等待 30 秒以获得某个答案。问题是,即使我设置了超时,所有命令都会一个接一个发送,无需等待超时,测试一开始就结束。我错过了什么吗?
这是我的代码:
send 'command 1'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'command 2'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'command 3'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'command 4'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'command 5'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'command 6'
timeout = 5 ;timeout set to 5 seconds
wait 'ok'
send 'test start'
timeout = 30 ;timeout set to 30 seconds
wait 'the response I want'
if result = 1 goto pass
if result = 0 goto fail
解决方法
在寻找其他问题时偶然发现了您的问题。
Timeout 用于表示“如果某件事在 X 时间内没有完成,则继续”,只需设置一次。您还想在发送命令之前进行设置。
在你的情况下是
Timeout = 5
Send 'Command'
Wait 'OK'
Send 'Command'
Wait 'OK'
Timeout = 30
Send 'Command'
Wait 'OK'
您可能还想使用 MPause 在它们之间添加一个轻微的暂停,以防止它们像旧调制解调器那样相互绊倒。
Send 'Command'
Wait 'OK'
MPause 50
Send 'Command'
Wait 'OK'
根据您的操作,将 Sends 和 Waits 更改为 SendLn 和 WaitLn 也可能值得,这些将发送带有命令的新行并等待带有新行的响应,这很常见。
但是警告,TeraTerm 有点乱,而且有点受限。如果你能使用真正的语言,我会这样做。