在MATLAB中等待音频完成
我试图创建一个指示灯,在播放音频时变为绿色,在播放音频后变为红色。我写了这几行在MATLAB中等待音频完成,matlab,matlab-app-designer,Matlab,Matlab App Designer,我试图创建一个指示灯,在播放音频时变为绿色,在播放音频后变为红色。我写了这几行 function PlayxnButtonPushed(app, event) if(app.wav_flag == 1 && app.yn_flag ==0) app.playingxnLamp.Color = 'g'; app.player = audioplayer(app.x, app.fs);
function PlayxnButtonPushed(app, event)
if(app.wav_flag == 1 && app.yn_flag ==0)
app.playingxnLamp.Color = 'g';
app.player = audioplayer(app.x, app.fs);
play(app.player,app.fs);
while( strcmp(app.player.running,'on') )
% Waiting for sound to finish
end
app.xn_flag = 1;
end
app.xn_flag = 0;
app.playingxnLamp.Color = 'r';
end
但它们造成了延迟,我最终不得不打开任务管理器来终止程序。你知道我应该做什么吗TIA使用代替。playblocking
功能保留控制权,直到播放完成
function PlayxnButtonPushed(app, event)
if(app.wav_flag == 1 && app.yn_flag ==0)
app.player = audioplayer(app.x, app.fs);
app.playingxnLamp.Color = 'g';
playblocking(app.player,app.fs); %replaced play with playblocking
app.xn_flag = 1;
end
app.xn_flag = 0;
app.playingxnLamp.Color = 'r';
end
正如我们的朋友所说。您必须使用playblocking而不是play。无需在循环时执行此操作。考虑这一点:
app.Lamp.Color = 'g';
player = audioplayer(y,Fs);
playblocking(player)
app.Lamp.Color = 'r';