我正在使用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。
不能理解为什么会出现这些错误并且可以使用一些帮助。 谢谢!
答案 0 :(得分:0)
首先,正如人们所说,发布错误和代码。你知道在第一次运行循环时长度(A)是否小于20吗?因为如果没有,A没有定义,你不能转置那些不存在的东西。在循环之前将A初始化为某个东西并查看错误是否仍然存在(或打印出长度(A)以确保循环在第一次运行时进入)。
对于暂停错误,请确保pause是int或double,而不是字符串。如果从GUI字段获取全局timeStep,它可能是一个字符串,您需要先将其转换为双倍。