我正在尝试创建一个无限循环来轮询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实际上提供了一种方法来进行轮询以退出脚本并且效果很好。