84 lines
1.9 KiB
Matlab
84 lines
1.9 KiB
Matlab
classdef LabDeviceTemplate < handle
|
|
|
|
% Minimal template for lab device control via VISA / SCPI
|
|
% Copy this file and adapt:
|
|
% - visaAddress
|
|
% - public API methods
|
|
% - private SCPI commands
|
|
|
|
properties (Access = public)
|
|
active logical = true
|
|
end
|
|
|
|
properties (Access = protected)
|
|
visaAddress string
|
|
end
|
|
|
|
methods (Access = public)
|
|
|
|
function obj = LabDeviceTemplate(options)
|
|
arguments
|
|
options.active logical = true
|
|
options.visaAddress string = ""
|
|
end
|
|
|
|
% apply options
|
|
fn = fieldnames(options);
|
|
for k = 1:numel(fn)
|
|
obj.(fn{k}) = options.(fn{k});
|
|
end
|
|
|
|
% optional: quick connectivity check
|
|
if obj.active
|
|
v = obj.connect();
|
|
writeline(v,"*IDN?");
|
|
idn = readline(v);
|
|
disp("Connected to: " + string(idn));
|
|
delete(v);
|
|
end
|
|
end
|
|
|
|
|
|
function success = set(obj, value)
|
|
% Example public API
|
|
v = obj.connect();
|
|
success = obj.setValue_(v, value);
|
|
delete(v);
|
|
end
|
|
|
|
|
|
function value = read(obj)
|
|
% Example readback
|
|
v = obj.connect();
|
|
value = obj.readValue_(v);
|
|
delete(v);
|
|
end
|
|
|
|
end
|
|
|
|
|
|
methods (Access = protected)
|
|
|
|
function v = connect(obj)
|
|
assert(obj.visaAddress ~= "", "No VISA address defined");
|
|
v = visadev(obj.visaAddress);
|
|
end
|
|
|
|
end
|
|
|
|
|
|
methods (Access = private)
|
|
|
|
function success = setValue_(~, v, value)
|
|
writeline(v, sprintf("SET %g", value));
|
|
success = true;
|
|
end
|
|
|
|
function value = readValue_(~, v)
|
|
writeline(v, "READ?");
|
|
value = str2double(readline(v));
|
|
end
|
|
|
|
end
|
|
end
|