联系我们

与泰克代表实时聊天。 工作时间:上午 9:00 - 下午 5:00(太平洋标准时间)。

电话

致电我们

工作时间:上午9:00-下午5:00(太平洋标准时间)

下载

下载手册、产品技术资料、软件等:

下载类型
型号或关键字

反馈

How do I use TVC ActiveX control in Matlab?

问题:

How do I use TVC ActiveX control in Matlab?

答案:

Here is a simple example using the TVC activex control:


function get_waveform_tvc;
if (exist('instrHandle'))
delete(instrHandle)
end
clear all
instrHandle = actxserver('TVC.TvcCtrl.1');
instrHandle.Descriptor = 'GPIB0::1::INSTR';
out = instrHandle.Query('* IDN ?');
recordLength = instrHandle.Query('HORIZONTAL:RECORDLENGTH?');
instrHandle.WriteString(' DATA :START 1');
instrHandle.WriteString([' DATA :STOP ' num2str(recordLength)]);
instrHandle.WriteString(' DATA :WIDTH 1');
instrHandle.WriteString(' DATA : ENC RPB');
instrHandle.WriteString('Curve?')
str = instrHandle.ReadPartialString(2);
%% section of code to make sure that the response is valid. If
%% acquisition takes long time the response may not be empty
k = 0;
while isempty(str)
   str = instrHandle.ReadPartialString(2);
   k = k + 1;
       %break
    end
endif isempty(str)
   error(['Empty curve header for CURVE query response: ',str])
end   
if ~strcmp(str(1),'#')
   error(['Incorrect curve header (not #) for CURVE query response: ',str])
end
%pause(0.1)
recordLength = str2num(instrHandle.ReadPartialString(str2num(str(2))));
out = recordLength;
           % These appeared to be most reliable and common settings, may need to change
DATA _TYPE = 17;
BYTE_ORDER = 1;
readLength = recordLength; % could be something smaller
switch DATA _TYPE
case 17
   % this is the only more or less reliable setting
   % that handles large recordlengths
   out = (instrHandle.ReadIEEEBlock( DATA _TYPE,BYTE_ORDER,readLength))';
   out = double(int16(out)); % I am not sure that this is necessary, check the data types. Depends on MATLAB version
case {18,2,4,5}
   out = (instrHandle.ReadIEEEBlock( DATA _TYPE,BYTE_ORDER,readLength))';
case 2
   out = (instrHandle.ReadIEEEBlock( DATA _TYPE,BYTE_ORDER,readLength))';
otherwise
   error('Incorrect Data type')
end
ymult = str2num(instrHandle.Query('WFMP:YMULT?'));
yoff = str2num(instrHandle.Query('WFMP:YOFF?'));
xmult = str2num(instrHandle.Query('WFMP:XINCR?'));
xoff = str2num(instrHandle.Query('WFMP:PT_OFF?'));
xzero = str2num(instrHandle.Query('WFMP:XZERO?'));
ydata = ymult*(out - yoff);
xdata = xmult*((0:length(ydata)-1)-xoff)+xzero;
plot(xdata, ydata)
%After all data is read, use this, some instruments may not require this, it should return emty string then.
%out = instrHandle.ReadPartialString(2); % read the semicolon and newline character


此常见问题适用于:

无产品系列

产品:

常见问题 ID 52726

查看所有常见问题 »