带暂停功能的Matlab图形用户界面
我正在使用MatlabGUI指南。 gui是为了通过GPIB与keithley电流测量设备通信而构建的。 当对当前测量while循环使用切换按钮时,我在while循环中为每次迭代使用pause()函数,并在y数组读取结果上使用yttranspose带暂停功能的Matlab图形用户界面,matlab,Matlab,我正在使用MatlabGUI指南。 gui是为了通过GPIB与keithley电流测量设备通信而构建的。 当对当前测量while循环使用切换按钮时,我在while循环中为每次迭代使用pause()函数,并在y数组读取结果上使用yttranspose function Measure_Callback(hObject, eventdata, handles) global GPIB1 global filename global timeStep dis
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');
函数度量_回调(hObject、eventdata、handles)
全球GPIB1
全局文件名
全局时间步长
disp('正在进行测量\n秒表启动!');
抽搐
x=0;
n=0;
而get(hObject,'Value')
fprintf(GPIB1,“printnumber(smua.measure.i(smua.nvbuffer1)));
fprintf(GPIB1,'printbuffer(1,1,nvbuffer1');
A=fscanf(GPIB1);
如果长度(A)首先,如人们所说,发布错误和代码。你知道第一次运行循环时长度(A)是否小于20吗?因为如果没有,A就没有定义,你就不能转置不存在的东西。在循环之前初始化A,并查看错误是否仍然存在(或打印出长度(A),以确保循环在第一次运行时进入)
至于pause错误,请确保pause是int或double,而不是字符串。如果您从GUI字段获取全局时间步长,它可能是一个字符串,您需要先将其转换为双精度。有关StackOverflow的问题通常应包含一个字符串。您发布的代码不完整,也不可验证。请回答您的问题,以确保您问题中的代码是最小的(仅复制所需的代码)、完整的(复制所需的所有代码)和可验证的(我们应该能够仅使用您问题中的代码复制问题,不能少,也不能多)。当询问错误和警告时,最好发布整个消息和堆栈跟踪,而不是转述。