GeneratorTriggeredBurst.m

% GeneratorTriggeredBurst.m - for LibTiePie 0.6+
%
% This example generates a 100 kHz square waveform, 25% duty cycle, 0..5 V, 20 periods, this waveform is triggered by the external trigger.
% Connect the external trigger to GND to trigger the burst.
%
% Find more information on http://www.tiepie.com/LibTiePie .

if verLessThan('matlab', '8')
    error('Matlab 8.0 (R2012b) or higher is required.');
end

% Open LibTiePie and display library info if not yet opened:
import LibTiePie.Const.*
import LibTiePie.Enum.*

if ~exist('LibTiePie', 'var')
  % Open LibTiePie:
  LibTiePie = LibTiePie.Library
end

% Update device list:
LibTiePie.DeviceList.update();

% Try to open a generator with triggered burst support:
clear gen;
for k = 0 : LibTiePie.DeviceList.Count - 1
    item = LibTiePie.DeviceList.getItemByIndex(k);
    if item.canOpen(DEVICETYPE.GENERATOR)
        gen = item.openGenerator();
        if ismember(GM.BURST_COUNT, gen.ModesNative) && ~isempty(gen.TriggerInputs)
            break;
        else
            clear gen;
        end
    end
end
clear item

if exist('gen', 'var')
    % Set signal type:
    gen.SignalType = ST.SQUARE;

    % Set frequency:
    gen.Frequency = 100e3; % 100 kHz

    % Set symmetry (duty cycle):
    gen.Symmetry = 0.25; % 25 %

    % Set amplitude:
    gen.Amplitude = 5; % 5 V

    % Set offset:
    gen.Offset = 0; % 0 V

    % Set mode:
    gen.Mode = GM.BURST_COUNT;

    % Set burst count:
    gen.BurstCount = 20; % 20 periods

    % Locate trigger input:
    triggerInput = gen.getTriggerInputById(TIID.EXT1); % EXT 1

    if triggerInput == false
        triggerInput = gen.getTriggerInputById(TIID.EXT2); % EXT 2
    end

    if triggerInput == false
        clear triggerInput;
        clear gen;
        error('Unknown trigger input!');
    end

    % Enable trigger input:
    triggerInput.Enabled = true;

    % Set trigger input kind:
    triggerInput.Kind = TK.FALLINGEDGE;

    % Release reference to trigger input:
    clear triggerInput;

    % Enable output:
    gen.OutputOn = true;

    % Print generator info:
    display(gen)

    % Start triggered burst:
    gen.start();

    % Wait for keystroke:
    display('Press any key to stop signal generation...');
    waitforbuttonpress;

    % Stop generator:
    gen.stop();

    % Disable output:
    gen.OutputOn = false;

    % Close generator:
    clear gen;
else
    error('No generator available with triggered burst support!');
end