Tera Term Language: ожидание не дожидается окончания тайм-аута
Пытаюсь написать макрос для ускорения настройки теста.
Что мне нужно сделать, так это отправить кучу команд конфигурации на мою доску и ждать «ОК» после каждой. Последняя команда запускает тест, и после этого я хочу подождать до 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
1 ответ
Наткнулся на ваш вопрос, ища другую проблему.
Тайм-аут используется, чтобы сказать: «Если что-то не было сделано в течение 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 немного беспорядок и немного ограничен. Если вы можете использовать настоящий язык, я бы так и сделал.