0

我正在 Matlab 中创建一个 GUI,它将根据试用持续时间将数据读取和写入文本文件。用户将输入试验次数和试验持续时间,然后按下“开始”按钮。

例如,用户以 10 秒的持续时间输入 5 次试验。在开始第一次试用时,我需要连续读取/写入数据 10 秒,然后停止并保存文本文件。这个过程将在接下来的 5 次试验中继续进行。这是我尝试在下面实现的简短代码。

如何将计时器运行 10 秒并在该时间限制内同时读取/写入数据?

提前致谢。

        % Get Number of Trials
        number_trials = str2double(get(handles.Number_Trials,'String'));
        % Get Trial Duration
        trial_duration = str2double(get(handles.Trial_Duration,'String'));

        % Timer Counter
        global timer_cnt
        timer_cnt = 0;

        global eye_data
        eye_data = 0;

        for i = 1:number_trials
            % Set Current Trial Executing
            set(handles.Current_Trial_Text,'String',num2str(i));

            % Set Text File Specifications
            data_fname = get(handles.Data_Filename_Edit_Text,'String');
            file_fname = '.dat';
            data_fname_txt = strcat(data_fname,file_fname);

            % Timer Object
            fprintf('%s\n','Timer Started');

            % Pauses 10 Seconds
            t = timer('TimerFcn','stat=false','StartDelay',10);

            start(t);

            stat = true;
            while(stat == true)
                disp('.');
                pause(1)
            end

            fprintf('%s\n','Timer Ended');
            delete(t);

        end
4

1 回答 1

1

根据我的经验,计时器通常用于“等待这段时间,然后执行foo”的上下文,而不是您如何使用它,即“一直执行foo到完成这段时间”。

不起眼的tic/toc功能可以为您做到这一点。

t_start = tic;
while toc(t_start) < 10
    % do data collection
end
于 2013-07-08T23:08:35.750 回答