В этом примере показано, как синхронизировать запуск захвата изображения с помощью Image Acquisition Toolbox™ и двух National Instruments RTSI способные устройства захвата изображения.
Часто необходимо синхронизировать два или больше устройства захвата изображения очень тесно. Например, вы могли записать синхронизируемое видео во время эксперимента, который является дорогостоящим или невозможным скопировать. Из-за природы эксперимента это было бы выгодно, чтобы использовать RTSI, чтобы гарантировать самую надежную связь между вашим National Instruments PCI-1409 и устройствами захвата изображения PCIe-1430.
Используя Image Acquisition Toolbox, создайте объект ввода видео записать видео и настроить параметры для приобретения.
% Create the object. vid1409 = videoinput('ni', 1); % Set to acquire approximately one second of frames per trigger. vid1409.FramesPerTrigger = 30;
Можно использовать любую карту, чтобы инициировать другой, но этот пример использует PCIe-1430, чтобы инициировать PCI-1409. Смотрите, какие инициировавшие настройки доступны для PCI-1409.
% See the possible settings.
triggerinfo(vid1409)
Valid Trigger Configurations: TriggerType: TriggerCondition: TriggerSource: 'immediate' 'none' 'none' 'manual' 'none' 'none' 'hardware' 'fallingEdge' 'external0' 'hardware' 'fallingEdge' 'external1' 'hardware' 'fallingEdge' 'external2' 'hardware' 'fallingEdge' 'external3' 'hardware' 'fallingEdge' 'rtsi0' 'hardware' 'fallingEdge' 'rtsi1' 'hardware' 'fallingEdge' 'rtsi2' 'hardware' 'fallingEdge' 'rtsi3' 'hardware' 'fallingEdge' 'rtsi4' 'hardware' 'fallingEdge' 'rtsi5' 'hardware' 'fallingEdge' 'rtsi6' 'hardware' 'risingEdge' 'external0' 'hardware' 'risingEdge' 'external1' 'hardware' 'risingEdge' 'external2' 'hardware' 'risingEdge' 'external3' 'hardware' 'risingEdge' 'rtsi0' 'hardware' 'risingEdge' 'rtsi1' 'hardware' 'risingEdge' 'rtsi2' 'hardware' 'risingEdge' 'rtsi3' 'hardware' 'risingEdge' 'rtsi4' 'hardware' 'risingEdge' 'rtsi5' 'hardware' 'risingEdge' 'rtsi6'
Установите объект ввода видео для оборудования провокация линии RTSI 1 на возрастающее ребро.
% Set the triggering configuration. triggerconfig(vid1409, 'hardware', 'risingEdge', 'rtsi1');
Создайте объект ввода видео записать видео и настроить параметры для приобретения и для управления RTSI1 высоко, когда приобретение запустится.
% Create the object. vid1430 = videoinput('ni', 2); % Set to acquire approximately one second of frames per trigger. vid1430.FramesPerTrigger = 30;
Для того, чтобы управлять линией 1409 PCI RTSI, необходимо установить правильную линию и полярность на PCIe-1430. Кроме того, необходимо определить, какое событие устройства захвата изображения будет управлять линией RTSI. Вы видите список событий, которые доступны путем рассмотрения специфичных для устройства исходных свойств, которые заканчиваются в “Автомобильной трансмиссии” и “DrivePolarity”:
% Get the currently selected source. src = getselectedsource(vid1430); % Display the properties and their possible settings. set(src)
General Settings: Tag Device Specific Properties: AcquisitionDoneDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] AcquisitionDoneDrivePolarity: [ {activeHigh} | activeLow ] AcquisitionInProgressDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] AcquisitionInProgressDrivePolarity: [ {activeHigh} | activeLow ] ExternalTriggerLineFilter: [ off | {on} ] FrameDoneDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] FrameDoneDrivePolarity: [ {activeHigh} | activeLow ] FrameStartDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] FrameStartDrivePolarity: [ {activeHigh} | activeLow ] HSyncDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] HSyncDrivePolarity: [ {activeHigh} | activeLow ] RTSITriggerLineFilter: [ off | {on} ] VSyncDriveLine: [ {none} | external0 | rtsi0 | rtsi1 | rtsi2 | rtsi3 | rtsi4 | rtsi5 | rtsi6 ] VSyncDrivePolarity: [ {activeHigh} | activeLow ]
В этом случае вы хотите управлять линией RTSI 1 высокое, когда приобретение происходит. Это гарантирует, что линия управляется высоко, как только приобретение начинается. Для этого необходимо установить приобретение в линии диска прогресса к 'rtsi1':
% Set to drive RTSI1 high when the acquisition begins. src.AcquisitionInProgressDriveLine = 'rtsi1';
Смотря на выход выше, вы видите, что полярность для приобретения в событии прогресса уже установлена в 'возбуждаемый высоким уровнем сигнала', таким образом, вы не должны устанавливать его.
Обратите внимание на то, что максимальное количество линий, которыми можно управлять, аппаратно-зависимо и будет возможно варьироваться между устройствами.
В этой точке вы собираетесь получить приблизительно одну секунду систем координат от каждого устройства, когда PCIe-1430 запускается.
Можно теперь запустить объект ввода видео PCI-1409 и видеть, что он ожидает аппаратного триггера.
start(vid1409); vid1409
Summary of Video Input Object Using 'PCI/PXI-1409'. Acquisition Source(s): Channel 0, Channel 1, Channel 2, and Channel 3 are available. Acquisition Parameters: 'Channel 0' is the current selected source. 30 frames per trigger using the selected source. 'img1' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'hardware' trigger(s). Status: Waiting for trigger 1 of 1. 0 frames acquired since starting. 0 frames available for GETDATA.
Можно теперь отобразить сводные данные объекта ввода видео PCIe-1430 и видеть, что он настраивается, чтобы инициировать непосредственно после запуска.
vid1430
Summary of Video Input Object Using 'PCIe-1430'. Acquisition Source(s): Channel 0 is available. Acquisition Parameters: 'Channel 0' is the current selected source. 30 frames per trigger using the selected source. 'img0_Port0' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA.
Когда вы запустите объект ввода видео PCIe-1430, он будет сразу инициирован и начнет получать. В тот момент устройство захвата изображения отправит сигнал в другое устройство захвата изображения через линию RTSI 1, который заставит PCI-1409 начинаться почти синхронно.
start(vid1430)
% Wait on both objects until you are done acquiring.
wait(vid1430), wait(vid1409)
Если вы теперь отобразите сводные данные, то вы будете видеть, что оба устройства получили системы координат.
vid1409
Summary of Video Input Object Using 'PCI/PXI-1409'. Acquisition Source(s): Channel 0, Channel 1, Channel 2, and Channel 3 are available. Acquisition Parameters: 'Channel 0' is the current selected source. 30 frames per trigger using the selected source. 'img1' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'hardware' trigger(s). Status: Waiting for START. 30 frames acquired since starting. 30 frames available for GETDATA.
и:
vid1430
Summary of Video Input Object Using 'PCIe-1430'. Acquisition Source(s): Channel 0 is available. Acquisition Parameters: 'Channel 0' is the current selected source. 30 frames per trigger using the selected source. 'img0_Port0' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 30 frames acquired since starting. 30 frames available for GETDATA.
Если объекты ввода видео больше не необходимы, удаляют их и очищают их и ссылку на источник из рабочей области.
delete(vid1430) delete(vid1409) clear vid1430 vid1409 src