Read Binary Data from Keysight DMM

조회 수: 5 (최근 30일)
Christopher Saltonstall
Christopher Saltonstall 2022년 7월 1일
I am trying to read voltage measurements from a Keysight 34465A digital multimeter. When the data format is set to ASCII I can read data no problem. However, when the data type is set to Binary (REAL), i get a format error using binblockread. How can I read binary data from a Keysight DMM?
Format error detected during binblockread.
binblock data must be in the format:
#[N][D][A], where
'#' is the token marking the start of the binblock.
'N' specifies the number of digits in D that follow.
'D' specifies the number of data bytes in A that follow.
A is the data
My code follows
clear;
close all;
%% Inputs
dataType = 'REAL';
%% Connect
%An easy way to get the address is with the free Keysight Connection Expert
%software
DMMAddr = "USB0::0x2A8D::0x0101::MY57501917::0::INSTR";
try
resources = visadevlist
app.DMM.DMM = visadev(DMMAddr);
disp('Successful Connection')
catch ME
disp('Unsuccessful Connection')
clear app.DMM.DMM
end
%% Read
if ~isempty(app.DMM.DMM)
try
app.DMM.errorlist = {};
writeline(app.DMM.DMM, '*IDN?');
name = readline(app.DMM.DMM);
%set the format
writeline(app.DMM.DMM, ['FORM:DATA ' dataType]);
app = app_readerror_DMM(app);
writeline(app.DMM.DMM, 'FORM:DATA?')
format_data = readline(app.DMM.DMM);
writeline(app.DMM.DMM, ['FORM:BORD NORM']);
app = app_readerror_DMM(app);
writeline(app.DMM.DMM, 'FORM:BORD?')
format_bord = readline(app.DMM.DMM);
if strcmp(dataType,'REAL') || strcmp(dataType,'SWAP')
data_num = [];
writeline(app.DMM.DMM, "MEAS:VOLT:DC?");
data_temp = readbinblock(app.DMM.DMM)';
%data_char = readline(app.DMM.DMM);
%convert data from bytes to single floats
data_channel = swapbytes(typecast(uint8(data_temp),'single'));
data_num = [data_num, data_channel];
elseif strcmp(dataType,'ASCII')
writeline(app.DMM.DMM, "MEAS:VOLT:DC?");
data_temp = readline(app.DMM.DMM);
else
error('Data type not recognize.')
end
catch ME
disp('Programming Error')
disp(ME.message)
clear app.DMM.DMM
end
end
%% Disconnect
clear app.DMM.DMM
disp('DMM Connection Closed')
%%
function app = app_readerror_DMM(app)
%errors are stored in the power analyzer buffer and read out one at a time,
%most recent first. Therefore, it is good practice to read the errors
%after each command.
response = writeread(app.DMM.DMM, 'SYST:ERR?');
idx = length(app.DMM.errorlist) + 1;
app.DMM.errorlist{idx,1} = response;
end

답변 (0개)

카테고리

Help CenterFile Exchange에서 Instrument Control Toolbox Supported Hardware에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by