簡體   English   中英

具有暫停功能的Matlab GUI

[英]Matlab gui with pause function

我正在使用matlab gui的GUIDE。 gui的構建是為了通過GPIB與吉時利電流測量設備進行通信。 當使用切換按鈕進行while循環電流測量時,我在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');  

對於暫停功能,我遇到錯誤: ?? 使用==> pause時出錯評估uicontrol回調時出錯

對於transpose(y)函數,我也遇到一個錯誤: 其未定義的y。

不能理解這些錯誤的原因,可以尋求幫助。 謝謝!

就像人們所說的那樣,首先發布錯誤和代碼。 您是否知道第一次運行循環時length(A)是否小於20? 因為如果沒有,則A未定義,因此您無法轉置不存在的內容。 在循環之前初始化A,以查看錯誤是否仍然存在(或打印出length(A)以確保循環在第一次運行時進入)。

至於暫停錯誤,請確保暫停是一個整數或雙精度數,而不是字符串。 如果從GUI字段獲取全局timeStep,則它可能是字符串,並且需要隱秘使其首先加倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM