У меня есть код, который выполняет измерения от внешнего устройства, и я хочу проводить измерения в течение определенного периода времени. Мне нужно записать измерения вместе с отметками времени, поэтому я собрал цикл while для запуска во время выполнения таймера с условием выхода из цикла, когда таймер достигнет нуля.
Переменная «meter» является дескриптором внешнего устройства, и разговаривать с ним не проблема.
Проблема в том, что цикл while никогда не завершается, когда код выполняется внутри функции, даже если "Finished!" Метод успешно отображает. Код работает нормально, если я запускаю его один в командном окне, и в коде нет других экземпляров таймеров, поэтому я понятия не имею, почему происходит такое другое поведение. Я бы использовал паузу, чтобы следить за временем, но я хочу снять как можно больше показаний в течение 10 секунд, чтобы он просто не летал.
fprintf('\nCollecting 10 s data from detector...');
i = 1;
t1 = timer('TimerFcn','stat=false; fprintf(''\nFinished!'')','StartDelay',10);
start(t1);
stat = true;
while(stat==true)
Timestamps{i} = datetime('now');
fprintf(meter,':READ?');
Current(i) = str2num(fscanf(meter));
i = i + 1;
end
Любые мысли о том, почему это может вести себя по-разному, когда внутри функции?