Работа с триггерами

В этом примере показано, как использовать различные типы инициирования и как сконфигурировать другие триггерные свойства.

Конфигурирование триггерных свойств

Чтобы получить список конфигурируемых триггерных настроек, используйте функцию TRIGGERINFO с объектом ввода видео. TRIGGERINFO возвратит все возможные триггерные настройки, поддержанные устройством получения изображений, сопоставленным с объектом ввода видео. Возможные настройки состоят из допустимого триггерного типа, триггерного условия и триггерной исходной комбинации.

Примечание: Все устройства получения изображений поддерживают мгновенные и ручные триггерные типы. Аппаратный триггерный тип доступен, только если он поддерживается устройством получения изображений.

% Access an image acquisition device.
vidobj = videoinput('matrox', 1);

% Display all valid trigger configurations.
triggerinfo(vidobj)
   Valid Trigger Configurations:

      TriggerType:   TriggerCondition:   TriggerSource:   
      'immediate'    'none'              'none'           
      'manual'       'none'              'none'           
      'hardware'     'fallingEdge'       'digitalTrigger' 
      'hardware'     'fallingEdge'       'optoTrigger'    
      'hardware'     'fallingEdge'       'timer1'         
      'hardware'     'fallingEdge'       'timer2'         
      'hardware'     'risingEdge'        'digitalTrigger' 
      'hardware'     'risingEdge'        'optoTrigger'    
      'hardware'     'risingEdge'        'timer1'         
      'hardware'     'risingEdge'        'timer2'   

Чтобы сконфигурировать триггерные настройки для устройства получения изображений, используйте функцию TRIGGERCONFIG с желаемым триггерным типом, инициируйте условие и инициируйте источник.

triggerconfig(vidobj, 'hardware', 'fallingEdge', 'optoTrigger')

% View the current trigger configuration.
currentConfiguration = triggerconfig(vidobj)
currentConfiguration = 

         TriggerType: 'hardware'
    TriggerCondition: 'fallingEdge'
       TriggerSource: 'optoTrigger'

Примечание: Конфигурирование триггерных настроек требует, чтобы была задана уникальная настройка. Если определение триггерного типа однозначно определяет настройку, никакие дальнейшие аргументы не должны быть предоставлены TRIGGERCONFIG.

Аппаратные триггеры являются единственным триггерным типом, которые обычно имеют несколько допустимых настроек.

Мгновенное инициирование

По умолчанию триггерный тип объекта ввода видео сконфигурирован для мгновенного инициирования. Мгновенное инициирование указывает, что регистрация данных должна начаться, как только НАЧИНАТЬ функция выпущена.

% Configure the trigger type.
triggerconfig(vidobj, 'immediate')

% Initiate the acquisition.
start(vidobj)

% Wait for acquisition to end.
wait(vidobj, 2)

% Determine the number frames acquired.
frameslogged = vidobj.FramesAcquired;
frameslogged =

    10

Ручное инициирование

Ручное инициирование требует, чтобы ТРИГГЕРНАЯ функция была выпущена, прежде чем регистрация данных должна начаться.

% Configure the trigger type.
triggerconfig(vidobj, 'manual')

% Initiate the acquisition.
start(vidobj)

% Verify no frames have been logged.
frameslogged = vidobj.FramesAcquired;
frameslogged =

     0
% Trigger the acquisition.
trigger(vidobj)

% Wait for the acquisition to end.
wait(vidobj, 2);

% Determine the number frames acquired.
frameslogged = vidobj.FramesAcquired;
frameslogged =

     10

Аппаратное инициирование

Аппаратное инициирование начинает регистрировать данные, как только триггерное условие соблюдали через триггерный источник.

В этом примере мы соединили opto-изолированный триггерный источник с функционального преобразователя на наше устройство получения изображений. Устройство получения изображений начнет регистрировать данные после обнаружения падающего сигнала ребра из источника.

% Configure the trigger settings.
triggerconfig(vidobj, 'hardware', 'fallingEdge', 'optoTrigger')

Первоначально, никакой сигнал не отправляется с источника на устройство получения изображений.

% Initiate the acquisition.
start(vidobj)

% Verify nothing has been acquired.
frameslogged = vidobj.FramesAcquired;
frameslogged =

     0

Сигнал прямоугольной волны будет теперь отправлен с триггерного источника на устройство получения изображений.

% Wait for the acquisition to end.
wait(vidobj, 10)

% Verify frames were acquired.
frameslogged = vidobj.FramesAcquired;
frameslogged =

    10
% Once the video input object is no longer needed, delete
% it and clear it from the workspace.
delete(vidobj)
clear vidobj