PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
clc;
close all;
clearvars;
PS6000Config;
%% Device Connection
% Check if an Instrument session using the device object 'ps6000DeviceObj'
% is still open, and if so, disconnect if the User chooses 'Yes' when prompted.
if (exist('ps6000DeviceObj', 'var') && ps6000DeviceObj.isvalid && strcmp(ps6000DeviceObj.status, 'open'))
openDevice = questionDialog(['Device object ps6000DeviceObj has an open connection. ' ...
'Do you wish to close the connection and continue?'], ...
'Device Object Connection Open');
if (openDevice == PicoConstants.TRUE)
disconnect(ps6000DeviceObj);
delete(ps6000DeviceObj);
else
return;
end
end
ps6000DeviceObj = icdevice('picotech_ps6000_generic.mdd', '');
connect(ps6000DeviceObj);
set(ps6000DeviceObj, 'displayOutput', PicoConstants.FALSE);
voltageRangeIndex = ps6000Enuminfo.enPS6000Range.PS6000_50MV;
coupling = ps6000Enuminfo.enPS6000Coupling.PS6000_DC_1M;
[status.setChA] = invoke(ps6000DeviceObj, 'ps6000SetChannel', 0, 1, coupling, voltageRangeIndex, 0.0, 0);
[status.setChB] = invoke(ps6000DeviceObj, 'ps6000SetChannel', 1, 1, coupling, voltageRangeIndex, 0.0, 0);
[status.setChC] = invoke(ps6000DeviceObj, 'ps6000SetChannel', 2, 1, coupling, voltageRangeIndex, 0.0, 0);
[status.setChD] = invoke(ps6000DeviceObj, 'ps6000SetChannel', 3, 1, coupling, voltageRangeIndex, 0.0, 0);
timebaseIndex = 2;
set(ps6000DeviceObj, 'timebase', timebaseIndex);
[status.getTimebase2, timeIntervalNanoSeconds, maxSamples] = invoke(ps6000DeviceObj, 'ps6000GetTimebase2', timebaseIndex, 0);
triggerGroupObj = get(ps6000DeviceObj, 'Trigger');
triggerGroupObj = triggerGroupObj(1);
set(triggerGroupObj, 'delay', 144000);
set(triggerGroupObj, 'autoTriggerMs', 1000);
thresholdVoltage = 50;
set(ps6000DeviceObj, 'numPreTriggerSamples', 0);
set(ps6000DeviceObj, 'numPostTriggerSamples', 1e4);
blockGroupObj = get(ps6000DeviceObj, 'Block');
blockGroupObj = blockGroupObj(1);
tic
[status.setSimpleTrigger] = invoke(triggerGroupObj, 'setSimpleTrigger', 0, thresholdVoltage, 2);
[status.runBlock] = invoke(blockGroupObj, 'runBlock', 0);
[numsamples, ~, ~, ~, chC, ~] = invoke(blockGroupObj, 'getBlockData', 0, 0, 1, 0);
toc
[status.setSimpleTrigger] = invoke(triggerGroupObj, 'setSimpleTrigger', 2, thresholdVoltage, 2);
[status.runBlock] = invoke(blockGroupObj, 'runBlock', 0);
[~, ~, chA, ~, ~, ~] = invoke(blockGroupObj, 'getBlockData', 0, 0, 1, 0);
toc
[status.setSimpleTrigger] = invoke(triggerGroupObj, 'setSimpleTrigger', 3, thresholdVoltage, 2);
[status.runBlock] = invoke(blockGroupObj, 'runBlock', 0);
[numSamples, ~, ~, chB, ~, ~] = invoke(blockGroupObj, 'getBlockData', 0, 0, 1, 0);
toc
[status.setSimpleTrigger] = invoke(triggerGroupObj, 'setSimpleTrigger', 1, thresholdVoltage, 2);
[status.runBlock] = invoke(blockGroupObj, 'runBlock', 0);
[~, ~, ~, ~, ~, chD] = invoke(blockGroupObj, 'getBlockData', 0, 0, 1, 0);
toc
[status.stop] = invoke(ps6000DeviceObj, 'ps6000Stop');
figure1 = figure('Name','PicoScope 6000 Series Example - Block Mode Capture', ...
'NumberTitle', 'off');
timeNs = double(timeIntervalNanoSeconds) * double(0:numSamples - 1);
plot(timeNs,chA,'-b',timeNs,chB,'-r',timeNs,chC,'-g',timeNs,chD,'-y');
disconnect(ps6000DeviceObj);
delete(ps6000DeviceObj);