首页 > 解决方案 > 即使使用 flushrecv,Wait 和 waitln 也只能工作一次

问题描述

我正在为 Tera Term 编写一个宏来测试连接到 COM 端口的微控制器。我希望宏暂停并等待用户提示,但是当我使用等待命令时,它适用于第一个提示,但不适用于第二个提示。

我尝试使用不同的键、CR、F1,甚至是字母键来触发提示,但它根本不会等待。

clearscreen 0
dispstr 'INSTRUCTIONS_1'
dispstr #13
flushrecv
dispstr 'INSTRUCTIONS_2'
wait #13
flushrecv

sendln 'COMMAND_1'
mpause 250
sendln 'COMMAND_2'
mpause 250
sendln 'COMMAND_3'
mpause 250
sendln 'COMMAND_4'

dispstr 'INSTRUCTIONS_3'
wait #13
flushrecv

sendln 'COMMAND_5'
sendln 'COMMAND_6'

dispstr 'INSTRUCTIONS_4'
wait #13

我希望宏能够为将来进行测试的人显示指令,然后在他们执行指令后按 Enter。命令被发送到微控制器,然后微控制器在宏等待用户连接示波器或连续性检查器等设备时执行其操作。mpause 命令用于给微控制器一点时间来写入内存并执行命令。

实际发生的是前两组指令出现并等待回车。然后宏的其余部分运行而不会暂停。

编辑:我找到了使用 yesnobox 和消息框而不是等待击键的解决方法。

标签: teraterm

解决方案


据我了解,等待命令仅适用于终端屏幕中显示的内容。因此,如果指令中有回车,则等待命令将执行,因为它已收到回车,具体取决于它与 dispstr 命令处理的速度或同步程度。

yesnobox 将是一个很好的解决方法,但是如果人们正在阅读说明,我会很好奇您是否不能在 dispstr 命令之后和等待命令之前添加一个短暂的暂停 (2-3) 秒。


推荐阅读