在JScript中读取stdin的无限循环

时间:2014-09-15 23:49:25

标签: while-loop infinite-loop polling jscript wsh

我正在尝试创建一个无限循环来轮询midi输入。我在这里的循环在技术上是无限的但我认为发生的事情是它被卡在WScript.StdIn.ReadLine()方法上。它似乎每次等待用户在继续之前输入内容。我认为这是因为当我输入一个字符时,该实例中的任何midi输入都将被路由并且WScript.Echo消息将会消失。

我怎样才能让它不等,但如果有角色则检查该实例?这样循环就不会停止等待输入。是否有另一种ReadLine()方法适用于我正在寻找的内容?

以下是代码:

while (true) {
    str = WScript.StdIn.ReadLine();
    if (str == 'q')
        break;
    // WScript.StdOut.Write("the while loop continues..."
    WScript.Echo("the while loop continues...")

    msgStr = mox.GetMidiInput()

    if (msgStr !== "") {
    msgArray = msgStr.split(",")
    tStamp = msgArray[0]
    port = msgArray[1]
    stat = msgArray[2]
    data1 = msgArray[3]
    data2 = msgArray[4]

    mox.OutputMidiMsg( 3, stat, data1, data2);
    } else {
        continue;
    }
}

编辑:

现在我刚刚摆脱了ReadLine(),因为我在MSDN上看到它在返回之前等待一个输入按键,我认为没有任何改变的论据...所以我有像我想要的无限循环,但我不得不求助于ctrl + c退出它。任何人对于允许我以某种方式通过键盘退出的构造有任何想法吗?

编辑2:

我发现midiox实际上提供了一种方法来进行轮询以退出脚本并且效果很好。

0 个答案:

没有答案