具有读写功能的试验计时器

时间:2013-07-08 18:49:13

标签: multithreading multiprocessing matlab matlab-guide

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

1 个答案:

答案 0 :(得分:1)

根据我的经验,计时器通常用于“等待这段时间,然后做foo”而不是你如何使用它,这是“做foo直到你在这段时间内完成了它。“

简陋的tic/toc函数可以为您完成此任务。

t_start = tic;
while toc(t_start) < 10
    % do data collection
end