这是我在StackOverflow上的第一篇文章,所以我提前道歉,如果它不是应该的那样。 我正在尝试做什么: 我在下面运行while(时间> 0)循环并检查按钮按下,当按下按钮时,使用MATLAB中的playsnd命令播放音调,该命令位于“sound.m”功能中。 “sound.m”由playound调用,在while(value(1)== 1)循环中调用,它检查按钮按下。 我的问题: 当TIME设置为8秒或更高时,并且当50%的时间已经过去,按下按钮时,playnd不会立即执行!奇怪的是,对于前50%,按下按钮时它会立即执行。对于低于8秒的TIME,当按下按钮时,播放也会立即执行!另一个奇怪的部分是错误只发生在80%的时间,这对我来说没有任何逻辑意义。循环时间与播放不执行有什么关系?
非常感谢你对这个问题的一些看法:)提前谢谢!
while(time > 0)
value = getvalue(portCH);
if(value(1) == 1)
display('Time refreshed');
time = TIME;
time_cumulative = time_cumulative +LOOP_TIME;
playsound(TONE);
while(value(1) ~= 0)
value = getvalue(portCH);
end
end
time = time - LOOP_TIME;
end
答案 0 :(得分:1)
我想这是因为EDT(Java事件调度线程)负责IO - see this post。只需将drawnow()
放入循环中,MATLAB将确保IO队列中的所有作业都将继续执行。