这就是为什么我编写了一个包装器函数,它试图处理错误,以便在丢帧的情况下,它只是再次被捕获并且不会中止正在运行的代码:
function img = getsnapshotfcn(obj, maxRetries, pausing)
% Default args
if(nargin < 3)
pausing = 4; % in sec
end
if(nargin < 2)
maxRetries = 20;
end
% Try to capture snapshot...
i = 0;
while(1)
i = i+1;
try
img = getsnapshot(obj);
% success? -> break loop
break;
catch err
% Pause shortly before retry
pause(pausing);
end
% maxRetries reached? -> error
if(i > maxRetries)
error('snapshot:maxRetriesReached', 'blaaa...');
end
end
end
现在使用getsnapshotfcn()
我有时仍然会在控制台中显示上面发布的错误消息,我想知道为什么。我没想到错误就消失了(请不要帮我解决这个问题,我已经知道我需要设置PacketDelay
我已经做过了,但在极少数情况下它仍然会发生,即使在快速CPU)但我预计它不会显示,因为我预期它只是通过try-catch
捕获。
它可能仍然在控制台中显示? 非常感谢你提前。
答案 0 :(得分:0)
我可以使用
在MATLAB中使用evalc
来解决它
evalc('img = getsnapshot(obj);')
而不是
img = getsnapshot(obj);
在上面的代码中: - )