由于循环时间较长,声音命令'播放'未执行

时间:2010-11-12 05:22:29

标签: matlab

这是我在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

1 个答案:

答案 0 :(得分:1)

我想这是因为EDT(Java事件调度线程)负责IO - see this post。只需将drawnow()放入循环中,MATLAB将确保IO队列中的所有作业都将继续执行。