As the camera acquires images, it applies one sequencer set after the other. This enables you to quickly change camera parameters without compromising the maximum frame rate.
For example, you can use the Sequencer feature to quickly change between preconfigured image ROIs or exposure times.
For a description of the Sequencer feature for GigE cameras, click here.
In this topic Hide
All auto functions (e.g., Gain Auto, Exposure Auto) must be set to Off.
To enable the sequencer mode, set the SequencerMode parameter to On.
To enable the sequencer configuration mode, set the SequencerMode parameter to Off and the SequenceConfigurationModeSequencerConfigurationMode parameter to OnOn.
Sequencer sets contain the following parameters, if available:
AcquisitionFrameRate AcquisitionFrameRateEnable BalanceRatio BinningHorizontal BinningVertical BlackLevel CenterX CenterY ChunkEnable ChunkModeActive ColorAdjustmentHue ColorAdjustmentSaturation ColorTransformationValue CounterDuration (for Counter 2) CounterEventSource CounterResetSource DigitalShift ExposureTime Gain |
Height LUTEnablea OffsetX OffsetY PixelFormat ReverseX ReverseY ScalingHorizontal SequencerSetNext SequencerSetPath SequencerSetSelector SequencerSetStart SequencerTriggerActivation SequencerTriggerSource TestImageSelector TimerDelay (for Timer 1) TimerDuration (for Timer 1) Width |
aOnly contained if the Gamma parameter is set to 1.0 and the LightSourcePreset parameter is set to Off.
All other camera parameters can't be controlled using the Sequencer feature.
Loading or saving a sequencer set will always load or save all of the above parameters, even those you haven't changed. For example, if you only changed the exposure time and left all other parameters at their default values, the values of all other parameters will also be stored (and overwritten on load).
Before you can use the Sequencer feature, you must populate the sequencer sets with your desired settings. Each sequencer set has a unique sequencer set index number, ranging from 0 to 31.
To populate the sequencer sets:
Example: Assume you need two sequencer sets and want to populate them with different image ROI settings. To do so:
You can now configure the sequencer to quickly change between the two image ROIs.
To save a sequencer set:
The values of all sequencer set parameters are stored in the selected sequencer set.
Sequencer sets are loaded automatically during sequencer operation. However, loading a sequencer set manually can be useful for testing purposes or to set up the sequencer.
To manually load a sequencer set:
The values of all sequencer set parameters are overwritten and replaced by the values stored in the selected sequencer set.
After you have configured the sequencer sets, you must set up the sequencer.
To control the sequencer, you must set up two so-called "paths":
To set up path 0, you must specify the source signal that you want to use as the "path 0" trigger signal, i.e., as a sequencer set reset signal.
You can select hardware signals or software signals as source signals for path 0. The source setting must be stored in sequencer set 0.
To specify the source signal for path 0:
First, you must specify the source signal that you want to use as the "path 1" trigger signal, i.e., as a sequencer set advance signal.
You can select the Frame Start trigger signal, hardware signals, software signals, or a counter as source signals for path 1. The source setting must be stored in sequencer set 0.
To specify the source signal for path 1:
Specifying the Sequencer Sets Used
Second, you must specify which sequencer sets are to be used during sequencer operation.
By default, all 32 sequencer sets are used. As "path 1" trigger signals are received, the sequencer advances in ascending sequencer set index numbers from 0 to 31. After that, the cycle restarts at 0.
To use a lower number of sequencer sets:
During operation, the sequencer will now switch to sequencer set 0 after the set with the highest index number. This "closes the circle".
If you set the source signal for path 1 to Counter2End, you can use a counter to control sequencer set advance.
This is useful if you want to set up a fixed sequence that uses sequencer sets multiple times in a row.
For each sequencer set, you can set the CounterDuration parameter to specify how many times the set is to be used in a row. By default, the parameter is set to 1 for all sets, and each sequence set is used once per cycle.
Example: Assume you want to set up the following sequencer set cycle:
To set up the above sequencer set cycle:
The SequencerSetStart and SequencerTriggerActivation parameters also control the operation of the sequencer. However, these parameters are preset and can’t be changed.
Camera Model | Notes |
---|---|
All ace 2 GigE camera models | See Sequencer (GigE Cameras). |
All ace 2 USB 3.0 camera models | Sequencer feature not supported |
All ace GigE camera models | See Sequencer (GigE Cameras). |
acA640-750um | No specific information for your camera model. |
acA640-750uc | No specific information for your camera model. |
acA640-90um | No specific information for your camera model. |
acA640-90uc | No specific information for your camera model. |
acA640-120um | No specific information for your camera model. |
acA640-120uc | No specific information for your camera model. |
acA720-520um | No specific information for your camera model. |
acA720-520uc | No specific information for your camera model. |
acA800-510um | No specific information for your camera model. |
acA800-510uc | No specific information for your camera model. |
acA1300-200um | No specific information for your camera model. |
acA1300-200uc | No specific information for your camera model. |
acA1300-30um | No specific information for your camera model. |
acA1300-30uc | No specific information for your camera model. |
acA1440-220um | No specific information for your camera model. |
acA1440-220uc | No specific information for your camera model. |
acA1600-20um | No specific information for your camera model. |
acA1600-20uc | No specific information for your camera model. |
acA1920-25um | If you use the camera
with overlapping
image acquisition, enabling the sequencer may affect the frame
rate:
|
acA1920-25uc | If you use the camera
with overlapping
image acquisition, enabling the sequencer may affect the frame
rate:
|
acA1920-40um | No specific information for your camera model. |
acA1920-40uc | No specific information for your camera model. |
acA1920-40umMED | No specific information for your camera model. |
acA1920-40ucMED | No specific information for your camera model. |
acA1920-150um | No specific information for your camera model. |
acA1920-150uc | No specific information for your camera model. |
acA1920-155um | No specific information for your camera model. |
acA1920-155uc | No specific information for your camera model. |
acA1920-155umMED | No specific information for your camera model. |
acA1920-155ucMED | No specific information for your camera model. |
acA2040-90um | No specific information for your camera model. |
acA2040-90umNIR | No specific information for your camera model. |
acA2040-90uc | No specific information for your camera model. |
acA2000-165um | No specific information for your camera model. |
acA2000-165umNIR | No specific information for your camera model. |
acA2000-165uc | No specific information for your camera model. |
acA2040-55um | No specific information for your camera model. |
acA2040-55uc | No specific information for your camera model. |
acA2040-120um | No specific information for your camera model. |
acA2040-120uc | No specific information for your camera model. |
acA2440-35um | No specific information for your camera model. |
acA2440-35uc | No specific information for your camera model. |
acA2440-35umMED | No specific information for your camera model. |
acA2440-35ucMED | No specific information for your camera model. |
acA2440-75um | No specific information for your camera model. |
acA2440-75uc | No specific information for your camera model. |
acA2440-75umMED | No specific information for your camera model. |
acA2440-75ucMED | No specific information for your camera model. |
acA2500-14um | If you use the camera
with overlapping
image acquisition, enabling the sequencer may affect the frame
rate:
|
acA2500-14uc | If you use the camera
with overlapping
image acquisition, enabling the sequencer may affect the frame
rate:
|
acA2500-60um | No specific information for your camera model. |
acA2500-60uc | No specific information for your camera model. |
acA3088-57um | No specific information for your camera model. |
acA3088-57uc | No specific information for your camera model. |
acA3800-14um | No specific information for your camera model. |
acA3800-14uc | No specific information for your camera model. |
acA4024-29um | No specific information for your camera model. |
acA4024-29uc | No specific information for your camera model. |
acA4096-30um | No specific information for your camera model. |
acA4096-30uc | No specific information for your camera model. |
acA4096-30umMED | No specific information for your camera model. |
acA4096-30ucMED | No specific information for your camera model. |
acA4096-40um | No specific information for your camera model. |
acA4096-40uc | No specific information for your camera model. |
acA4096-40umMED | No specific information for your camera model. |
acA4096-40ucMED | No specific information for your camera model. |
acA4112-20um | No specific information for your camera model. |
acA4112-20uc | No specific information for your camera model. |
acA4112-20umMED | No specific information for your camera model. |
acA4112-20ucMED | No specific information for your camera model. |
acA4112-30um | No specific information for your camera model. |
acA4112-30uc | No specific information for your camera model. |
acA4112-30umMED | No specific information for your camera model. |
acA4112-30ucMED | No specific information for your camera model. |
acA4600-10uc | No specific information for your camera model. |
acA5472-17um | No specific information for your camera model. |
acA5472-17uc | No specific information for your camera model. |
All boost CXP-12 camera models | Sequencer feature not supported |
All dart BCON for LVDS camera models | Sequencer feature not supported |
All dart BCON for MIPI camera models | Sequencer feature not supported |
All dart USB 3.0 camera models | Sequencer feature not supported |
All pulse USB 3.0 camera models | Sequencer feature not supported |
/* Configuring the sequencer sets */
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Configure parameters to be stored in the first sequencer set
camera.Width.SetValue(600);
camera.Height.SetValue(300);
// Select sequencer set 0 and save the parameter values
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetSave.Execute();
// Configure parameters to be stored in the second sequencer set
camera.Width.SetValue(800);
camera.Height.SetValue(600);
// Select sequencer set 1 and save the parameter values
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
/* Setting up path 0 */
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 0
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
// Set software signal 1 as "path 0" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_SoftwareSignal1);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
/* Setting up path 1 */
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 1
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(1);
// Set software signal 2 as "path 1" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_SoftwareSignal2);
// Save the changes
camera.SequencerSetSave.Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
camera.SequencerSetSelector.SetValue(3);
camera.SequencerSetLoad.Execute();
// Set the next sequencer set to 0 to "close the circle"
camera.SequencerPathSelector.SetValue(1);
camera.SequencerSetNext.SetValue(0);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
/* Advanced: Using a counter to control the sequencer */
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Load sequencer set 0 and select path 1
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Counter2End);
// Save the changes
camera.SequencerSetSave.Execute();
// Select counter 2 to configure this counter
camera.CounterSelector.SetValue(CounterSelector_Counter2);
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.CounterDuration.SetValue(2);
camera.SequencerSetSave.Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetLoad.Execute();
camera.CounterDuration.SetValue(3);
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
INodeMap& nodemap = camera.GetNodeMap();
/*Configuring the sequencer sets*/
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("Off");
CEnumerationPtr(nodemap.GetNode("SequencerConfigurationMode"))->FromString("On");
// Configure parameters to be stored in the first sequencer set
CIntegerPtr(nodemap.GetNode("Width"))->SetValue(600);
CIntegerPtr(nodemap.GetNode("Height"))->SetValue(300);
// Select sequencer set 0 and save the parameter values
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(0);
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Configure parameters to be stored in the second sequencer set
CIntegerPtr(nodemap.GetNode("Width"))->SetValue(800);
CIntegerPtr(nodemap.GetNode("Height"))->SetValue(600);
// Select sequencer set 1 and save the parameter values
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(1);
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Enable sequencer mode to operate the sequencer
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("On");
/*Setting up path 0*/
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("Off");
CEnumerationPtr(nodemap.GetNode("SequencerConfigurationMode"))->FromString("On");
// Load sequencer set 0 and select path 0
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(0);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
CIntegerPtr(nodemap.GetNode("SequencerPathSelector"))->SetValue(0);
// Set software signal 1 as "path 0" trigger signal
CEnumerationPtr(nodemap.GetNode("SequencerTriggerSource"))->FromString("SoftwareSignal1");
// Save the changes
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Enable sequencer mode to operate the sequencer
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("On");
/*Setting up path 1*/
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("Off");
CEnumerationPtr(nodemap.GetNode("SequencerConfigurationMode"))->FromString("On");
// Load sequencer set 0 and select path 1
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(0);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
CIntegerPtr(nodemap.GetNode("SequencerPathSelector"))->SetValue(1);
// Set software signal 2 as "path 1" trigger signal
CEnumerationPtr(nodemap.GetNode("SequencerTriggerSource"))->FromString("SoftwareSignal2");
// Save the changes
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(3);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
// Set the next sequencer set to 0 to "close the circle"
CIntegerPtr(nodemap.GetNode("SequencerPathSelector"))->SetValue(1);
CIntegerPtr(nodemap.GetNode("SequencerSetNext"))->SetValue(0);
// Save the changes
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Enable sequencer mode to operate the sequencer
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("On");
/*Advanced: Using a counter to control the sequencer*/
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("Off");
CEnumerationPtr(nodemap.GetNode("SequencerConfigurationMode"))->FromString("On");
// Load sequencer set 0 and select path 1
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(0);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
CIntegerPtr(nodemap.GetNode("SequencerPathSelector"))->SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
CEnumerationPtr(nodemap.GetNode("SequencerTriggerSource"))->FromString("Counter2End");
// Save the changes
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Select counter 2 to configure this counter
CEnumerationPtr(nodemap.GetNode("CounterSelector"))->FromString("Counter2");
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(0);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
CIntegerPtr(nodemap.GetNode("CounterDuration"))->SetValue(2);
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
CIntegerPtr(nodemap.GetNode("SequencerSetSelector"))->SetValue(1);
CCommandPtr(nodemap.GetNode("SequencerSetLoad"))->Execute();
CIntegerPtr(nodemap.GetNode("CounterDuration"))->SetValue(3);
CCommandPtr(nodemap.GetNode("SequencerSetSave"))->Execute();
// Enable sequencer mode to operate the sequencer
CEnumerationPtr(nodemap.GetNode("SequencerMode"))->FromString("On");
/*Configuring the sequencer sets*/
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Configure parameters to be stored in the first sequencer set
camera.Parameters[PLCamera.Width].SetValue(600);
camera.Parameters[PLCamera.Height].SetValue(300);
// Select sequencer set 0 and save the parameter values
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Configure parameters to be stored in the second sequencer set
camera.Parameters[PLCamera.Width].SetValue(800);
camera.Parameters[PLCamera.Height].SetValue(600);
// Select sequencer set 1 and save the parameter values
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
/*Setting up path 0*/
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 0
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
// Set software signal 1 as "path 0" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.SoftwareSignal1);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
/*Setting up path 1*/
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
// Set software signal 2 as "path 1" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.SoftwareSignal2);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(3);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
// Set the next sequencer set to 0 to "close the circle"
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(0);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
/*Advanced: Using a counter to control the sequencer*/
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Load sequencer set 0 and select path 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(1);
// Set the Counter2 end event as "path 1" trigger signal
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Counter2End);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Select counter 2 to configure this counter
camera.Parameters[PLCamera.CounterSelector].SetValue(PLCamera.CounterSelector.Counter2);
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.CounterDuration].SetValue(2);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.CounterDuration].SetValue(3);
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.On);
/*Configuring the sequencer sets*/
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "Off");
Pylon.DeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
// Configure parameters to be stored in the first sequencer set
Pylon.DeviceSetIntegerFeature(hdev, "Width", 600);
Pylon.DeviceSetIntegerFeature(hdev, "Height", 300);
// Select sequencer set 0 and save the parameter values
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Configure parameters to be stored in the second sequencer set
Pylon.DeviceSetIntegerFeature(hdev, "Width", 800);
Pylon.DeviceSetIntegerFeature(hdev, "Height", 600);
// Select sequencer set 1 and save the parameter values
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Enable sequencer mode to operate the sequencer
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "On");
/*Setting up path 0*/
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "Off");
Pylon.DeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
// Load sequencer set 0 and select path 0
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
Pylon.DeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
// Set software signal 1 as "path 0" trigger signal
Pylon.DeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal1");
// Save the changes
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Enable sequencer mode to operate the sequencer
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "On");
/*Setting up path 1*/
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "Off");
Pylon.DeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
// Load sequencer set 0 and select path 1
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
Pylon.DeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
// Set software signal 2 as "path 1" trigger signal
Pylon.DeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal2");
// Save the changes
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Assume you want to set up the following sequencer set cycle:
// 0 - 1 - 2 - 3 (- 0 - 1 - ...)
// Load the sequencer set with the highest index number to be used (here: 3)
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 3);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
// Set the next sequencer set to 0 to "close the circle"
Pylon.DeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetNext", 0);
// Save the changes
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Enable sequencer mode to operate the sequencer
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "On");
/*Advanced: Using a counter to control the sequencer*/
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "Off");
Pylon.DeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
// Load sequencer set 0 and select path 1
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
Pylon.DeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
// Set the Counter2 end event as "path 1" trigger signal
Pylon.DeviceFeatureFromString(hdev, "SequencerTriggerSource", "Counter2End");
// Save the changes
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Select counter 2 to configure this counter
Pylon.DeviceFeatureFromString(hdev, "CounterSelector", "Counter2");
// Assume you want to set up the following sequencer set cycle:
// 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...)
// Load sequencer set 0 and specify that this set is to be used
// two times in a row
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
Pylon.DeviceSetIntegerFeature(hdev, "CounterDuration", 2);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Load sequencer set 1 and specify that this set is to be used
// three times in a row
Pylon.DeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
Pylon.DeviceSetIntegerFeature(hdev, "CounterDuration", 3);
Pylon.DeviceExecuteCommandFeature(hdev, "SequencerSetSave");
// Enable sequencer mode to operate the sequencer
Pylon.DeviceFeatureFromString(hdev, "SequencerMode", "On");
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK; /* Return value of pylon methods */
/*Configuring the sequencer sets*/
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Configure parameters to be stored in the first sequencer set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 600);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 300);
CHECK(errRes);
/* Select sequencer set 0 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Configure parameters to be stored in the second sequencer set */
errRes = PylonDeviceSetIntegerFeature(hdev, "Width", 800);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "Height", 600);
CHECK(errRes);
/* Select sequencer set 1 and save the parameter values */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/*Setting up path 0*/
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
/* Set software signal 1 as "path 0" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal1");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/*Setting up path 1*/
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
/* Set software signal 2 as "path 1" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "SoftwareSignal2");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Assume you want to set up the following sequencer set cycle: */
/* 0 - 1 - 2 - 3 (- 0 - 1 - ...) */
/* Load the sequencer set with the highest index number to be used (here: 3) */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 3);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
/* Set the next sequencer set to 0 to "close the circle" */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 0);
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
/*Advanced: Using a counter to control the sequencer*/
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Load sequencer set 0 and select path 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 1);
CHECK(errRes);
/* Set the Counter2 end event as "path 1" trigger signal */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Counter2End");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Select counter 2 to configure this counter */
errRes = PylonDeviceFeatureFromString(hdev, "CounterSelector", "Counter2");
CHECK(errRes);
/* Assume you want to set up the following sequencer set cycle: */
/* 0 - 0 - 1 - 1 - 1 (- 0 - 0 - ...) */
/* Load sequencer set 0 and specify that this set is to be used */
/* two times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "CounterDuration", 2);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Load sequencer set 1 and specify that this set is to be used */
/* three times in a row */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "CounterDuration", 3);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Enable sequencer mode to operate the sequencer */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "On");
CHECK(errRes);
You can also use the pylon Viewer to easily set the parameters.