Matlab gui具有暂停功能

时间:2016-01-11 08:13:32

标签: matlab

我正在使用matlab gui的GUIDE。 为了通过GPIB与吉时利电流测量设备进行通信而构建的gui。 当在循环中使用切换按钮进行电流测量时,我在每次迭代的while循环中使用 pause()函数,在y数组上使用 ytranspose 读取结果。

    function Measure_Callback(hObject, eventdata, handles)

    global GPIB1
    global filename
    global timeStep

    disp('Measurement in progress \n stopwatch starts!');
    tic
    x=0;
    n=0;
    while get(hObject,'Value')
       fprintf(GPIB1, 'printnumber(smua.measure.i(smua.nvbuffer1))');
       fprintf(GPIB1, 'printbuffer(1,1,nvbuffer1)');
       A = fscanf(GPIB1);
       if length(A)<20
           x = x+1;
           n = n+1;
           t(n) = toc ;
           y(x) = str2double(A);
           plot(t,y,'-bo',...
                    'LineWidth',2,...
                   'MarkerEdgeColor','k',...
                    'MarkerFaceColor',[.49 1 .63],...
                    'MarkerSize',10);
           grid on
           hold on
       end 
       title('Current vs Time','FontSize', 15)
       xlabel('Time [s]','FontSize', 15)
       ylabel('Current [A]','FontSize', 15)
       a = timeStep;
       pause(a)
    end
    disp('Measurement terminated');
    disp('Elapsed time: ');
    elapsedtime = toc;
    elapsedtime_string = num2str(elapsedtime);
    disp(elapsedtime_string);
    ytrans = transpose(y);
    csvwrite(filename,ytrans);
    fprintf(GPIB1, 'smua.source.output = smua.OUTPUT_OFF');  

暂停功能我发现错误: 的?使用==&gt;时出错在评估uicontrol回调时暂停错误

对于转置(y)功能,我也遇到错误: 未定义的y。

不能理解为什么会出现这些错误并且可以使用一些帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

首先,正如人们所说,发布错误和代码。你知道在第一次运行循环时长度(A)是否小于20吗?因为如果没有,A没有定义,你不能转置那些不存在的东西。在循环之前将A初始化为某个东西并查看错误是否仍然存在(或打印出长度(A)以确保循环在第一次运行时进入)。

对于暂停错误,请确保pause是int或double,而不是字符串。如果从GUI字段获取全局timeStep,它可能是一个字符串,您需要先将其转换为双倍。