等到 shell 命令被执行

wait until shell command is executed

我有一个启动 shell 命令的脚本。问题是脚本不会等到命令完成并立即继续。 我试过 WAIT 但它不起作用,因为 shell 命令关闭和打开电源(点火 off/on),我收到错误消息,因为电源已关闭,所以无法执行 WAIT。

是否有任何命令可以让程序等待命令执行?

我的脚本是这样的:

    OS.COMMAND echo OUTP OFF > COM1
    
    OS.COMMAND echo OUTP ON > COM1
    
    System.up

如果我想执行 shell 命令 而不重定向 我会使用 OS.Area 而不是 OS.Command,因为 OS.Area 正在阻塞,将等待 shell 命令完成。但是我认为 OS.Area 不支持重定向。

如果我想执行 shell 命令并将 输出重定向到一个文件 我会先删除该文件,然后等待它可以访问。像这样:

IF OS.FILE.EXIST("myfile.txt")
    RM "myfile.txt"
OS.Command ECHO "Hello World" > "myfile.txt"
WAIT OS.FILE.readable("myfile.txt") 

但是您似乎想通过 shell 命令写入 Windows 上的 COM 端口。但我认为在使用 OS.Command...

时,不可能在 TRACE32 中等待,直到完成对 COM 端口的写入

所以我建议改为使用 TERM 命令来完成此任务:

TERM.METHOD #1 COM COM1 115200. 8 NONE 1STOP NONE
TERM.view #1
TERM.Out  #1 "OUTP OFF" 0x0A
TERM.Out  #1 "OUTP ON"  0x0A

当然你必须设置正确的波特率、位数、奇偶校验位和停止位。每个 TERM.Out 之后的 0x0A 只是换行符。

您的终端是否显示任何输出作为对 OUTP ON 的反应?如果是,您还可以等待此输出,例如SCREEN.WAIT TERM.LINE(#1,-1)=="OUTP is now ON" 5.s

否则我假设 SYStem.Up 之前的一个简单的 WAIT 50.ms 也可能会成功。