Tera 术语语言:等待不等待超时结束

问题描述

我正在尝试编写一个宏来加快测试的设置。

要做的是向我的板子发送一堆配置命令,然后在每个命令之后等待“确定”。最后一个命令是开始测试的命令,之后我想等待 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 有点乱,而且有点受限。如果你能使用真正的语言,我会这样做。