teraterm - 即使使用 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 和消息框而不是等待击键的解决方法。
解决方案
据我了解,等待命令仅适用于终端屏幕中显示的内容。因此,如果指令中有回车,则等待命令将执行,因为它已收到回车,具体取决于它与 dispstr 命令处理的速度或同步程度。
yesnobox 将是一个很好的解决方法,但是如果人们正在阅读说明,我会很好奇您是否不能在 dispstr 命令之后和等待命令之前添加一个短暂的暂停 (2-3) 秒。
推荐阅读
- python - 创建具有多个向量的 numpy 矩阵的最快方法
- java - java如何存储类型指示?
- python - Python中所有元素不重复的组合
- php - 将json字符串转换为变量
- rx-java - 解耦服务调用和数据库存储
- postgresql - 使用表名限定时,Postgres 列引用不明确
- javascript - 获取你写的节点
- python - csv 文件显示 ... 而不是整个数据框
- java - 比较不同对象的列表并使用Stream在java8中构建新的对象列表
- java - Passing returned variables to other static methods for calculations