Sequencer(ace 2 和 boost R)#
您可以定义多达 32 组参数设置(称为定序器集)。当相机接收到触发信号时,会逐个应用定序器集。
例如,您可以使用 Sequencer 功能,在预配置的图像 ROI或曝光时间之间快速切换。
该功能的使用#
定序器模式#
- 在定序器配置模式下,您可以配置定序器,但不能操作。
- 在定序器模式下,您可以操作定序器,但无法配置。
Sequencer 配置模式#
要启用定序器配置模式:
- 设置
SequencerModeacquisition modeOff. - 设置
SequencerConfigurationModeacquisition modeOn.
您现在可以配置定序器。
信息
- 在配置模式下,某些相机参数可能不可用,即已设为只读。请检查 pylon Viewer 中的特征 - 全部窗格,以了解哪些参数可用。
Sequencer 模式#
要启用 Sequencer 模式,请将 SequencerMode acquisition mode On。这会自动禁用 Sequencer 配置模式。
定序器现在已准备好接收触发信号并按配置推进。
信息
- 默认情况下,启用 Sequencer 模式时,相机会自动加载 Sequencer 集合 0。若要更改此行为,请将
SequencerSetStart参数设置为所需的起始集合。 - 在定序器模式下,某些相机参数可能不可用,即已设为只读。请检查 pylon Viewer 中的特征 - 全部窗格,以了解哪些参数可用。
- 在定序器模式下,根据所配置的定序器集计算某些相机参数值:
- 即:
PayloadSize参数值反映了所配置的最大 Sequencer 集合的大小。 - 突发图像中的最大可能图像数量,即
AcquisitionBurstFrameCount参数的最大值,是使用所配置的最大 Sequencer 集合计算得出的。
- 即:
- 您可以使用
SequencerSetActive参数以了解当前处于活动状态的 Sequencer 集合。 - 如果可用,您可以使用 Sequencer 集激活块来跟踪所使用的定序器集。启用后,每个图像都包含块数据,该数据包括用于图像采集的定序器集的索引号。
- 在某些相机上,启用 Sequencer 模式会禁用重叠图像采集,从而降低相机的最大帧率。这适用于此表中“重叠图像采集可用性”指定为“仅当相机配置为自由运行图像采集时”的所有相机。
定序器集中包含什么?#
定序器集包含以下参数(如果可用):
AutoFunctionROIWidthaAutoFunctionROIHeightaAutoFunctionROIOffsetXaAutoFunctionROIOffsetYaBinningHorizontalabBinningVerticalabBinningHorizontalModeabBinningVerticalModeabBslFlatFieldCorrectionModeBslFlatFieldCorrectionSetIndexExposureTimecGainHeightadOffsetXadOffsetYadPixelFormataSequencerSetNextSequencerTriggerActivationSequencerTriggerSourceWidthad
-
Basler ace 2 V 和 boost 相机不可用。
-
仅存储 FPGA Binning 的设置。
-
在操作或配置 Sequencer 时,Exposure Time Mode 预设为 Standard 或 Common,且无法更改。
-
在操作或配置定序器时,Multiple ROI 功能会被禁用。
其他所有相机参数均无法使用 Sequencer 功能控制。
信息
加载或保存定序器集将始终加载或保存以上所有参数,包括您未更改的参数在内。例如,如果仅更改 Exposure Time 并保留所有其他参数的默认值,则所有其他参数的值也将被存储,并在加载时被覆盖。
配置 Sequencer#
Basler 建议分两步配置定序器:
填充 Sequencer 集#
每个定序器集都有一个唯一的索引号,范围从 0 到 31。您可以使用所需的相机设置(例如,Exposure Time 或 Image ROI)填充这些定序器集。
若要填充定序器集:
- 确保定序器处于配置模式。
- 配置要存储在定序器集中的相机参数。
- 设置
SequencerSetSelector参数设置为所需集合的索引编号。 - 执行
SequencerSetSave命令。 - 对要使用的所有定序器集重复步骤 2 至 4。
示例:假设您想要使用不同的 Image ROI 设置来填充定序器集 0 和 1。为此:
- 通过调整以下内容创建第一个 Image ROI:
Width,Height,OffsetX,和OffsetY参数值。 - 保存定序器集 0。
- 通过为以下参数选择不同的值来创建第二个 Image ROI:
Width,Height,OffsetX,和OffsetY参数。 - 保存定序器集 1。
您随后可以配置定序器集推进,以便相机在两个 Image ROI 之间快速切换。
配置 Sequencer 集推进#
要控制定序器,您必须定义定序器应如何以及何时从一个定序器集推进到下一个定序器集。
对于每个定序器集,您必须定义以下内容:
| 标准 | 参数 |
|---|---|
| 下一个定序器集应该是什么? | SequencerSetNext |
| 定序器应根据哪个触发信号推进到下一个定序器集? | SequencerTriggerSource |
| 触发信号何时应被视为有效,例如,在信号的上升沿还是下降沿? | SequencerTriggerActivation |
如果需要,您可以通过配置所谓的路径,为每个定序器集定义上述内容两次。例如,您可以定义当接收到第 3 行上的触发信号时(= 路径 0),相机应推进到定序器集 1,而当接收到第 4 行上的触发器信号时(= 路径 1),相机推进到定序器集 3。
当所有这些都设置好后,相机就知道何时以及如何在定序器集之间转换,本质上就像一个状态机。
Sequencer 集推进独立于帧触发
定序器可以独立于图像采集推进。始终使用在相机接收到帧触发信号时处于活动状态的定序器集来获取图像。
例如,您可以使用输入线路 3 触发定序器集推进,但使用线路 4 触发图像。
如果您想要 同步 Sequencer 推进与图像采集,Basler 建议将 Sequencer Trigger Source 设置为 ExposureStart.
不要将定序器和帧开始 Trigger Source 设置为同一信号源。否则,相机可能会显示不可预测的行为。
若要配置定序器集推进:
- 确保定序器处于配置模式。
- 设置
SequencerSetSelector参数,设为 第一个 要配置的 Sequencer 集合。 - 执行
SequencerSetLoad命令。 - 为路径 0 配置定序器集推进:
- 设置
SequencerPathSelector参数设置为 0。 - 设置
SequencerSetNext参数设置为要配置的下一个集合。 - 设置
SequencerTriggerSource参数设置为应用於推进到下一个集合的源信号。
您可以选择任何可用的 触发源 信号,例如Line1或ExposureStart. - 如果您选择的 Trigger Source 可能是高电平 (1) 或低电平 (0),即 I/O 信号,请设置
SequencerTriggerActivation参数设置为以下值:RisingEdge(默认):当源信号 上升时,即信号状态从低电平变为高电平时,Counter 启动。FallingEdge:当源信号 下降时,即信号状态从高电平变为低电平时,Counter 启动。AnyEdge:当源信号 下降或上升.LevelHigh:当源信号为 高电平。如果在加载 Sequencer 集合时信号已经为高电平,Sequencer 会立即推进到下一个集合。这与图像采集无关。LevelLow:当源信号为 低电平。如果在加载 Sequencer 集合时信号已经为低电平,Sequencer 会立即推进到下一个集合。这与图像采集无关。
- 设置
- 如果要定义相机推进到不同集合的第二个条件,请使用
SequencerPathSelectorparameter 设置为 1。 - 执行
SequencerSetSave命令。 - 设置
SequencerSetSelector参数,设为 下一页 要配置的 Sequencer 集合。 - 对所有需要的定序器集重复步骤 3 至 7。
示例#
示例 1:循环遍历定序器集#
假设您想要在图像采集期间循环遍历定序器集 0、1 和 2。每当相机获取图像时,定序器应推进到下一个定序器集。
为此,按如下方式设置定序器:
| Sequencer 集选择器 | Sequencer 路径选择器 | Sequencer Trigger Source | Sequencer Trigger Activation | 下一个 Sequencer 集 |
|---|---|---|---|---|
| 0 | 0 | ExposureStart | - | 1 |
| 1 | 0 | ExposureStart | - | 2 |
| 2 | 0 | ExposureStart | - | 0 |
下面概述了如上所示设置定序器会发生什么情况:
- 启用后,定序器从序列器集 0(默认)开始并等待第一张图像的曝光。
- 当发生这种情况时,相机会将当前序列器集 0 应用于图像,然后推进到序列器集 1。
- 当下一次曝光开始时,相机会应用定序器集 1 并推进到定序器集 2。
- 当下一次曝光开始时,相机会应用定序器集 2 并推进到定序器集 0。
- 现在,定序器已返回定序器集 0,并重复上述过程。
示例 2:使用一个 Counter 和多条路径#
您可以将定序器设置为每采集第 n 张图像时推进到特定的定序器集。
这涉及使用 Counter 功能和配置多条路径。
假设您想要在图像采集期间在定序器集 0 和 1 之间交替,但在采集第一张图像及每采集第 10 张图像时,应该使用定序器集 2。
为此:
- 设置
SequencerStartSetparameter 设置为 2。 -
按如下方式配置 Counter 1:
CounterDuration= 10CounterEventSource=ExposureStartCounterResetSource=Counter1End
-
如下表所示设置定序器。
| Sequencer 集选择器 | Sequencer 路径选择器 | Sequencer Trigger Source | Sequencer Trigger Activation | 下一个 Sequencer 集 |
|---|---|---|---|---|
| 0 | 0 | ExposureActive | FallingEdge | 1 |
| 0 | 1 | Counter1End | - | 2 |
| 1 | 0 | ExposureActive | FallingEdge | 0 |
| 1 | 1 | Counter1End | - | 2 |
| 2 | 0 | ExposureActive | FallingEdge | 0 |
信息
- 在开始图像采集之前,确保计数器已复位。否则就不算数。
- 在上面的配置中,请注意计数器是使用曝光开始信号进行触发,而定序器集推进是使用具有下降沿激活的曝光激活信号进行触发。这有助于避免路径 0 和路径 1 之间的时序冲突。
下面概述了如上所示设置定序器会发生什么情况:
- 启用后,定序器从序列器集 2 开始并等待第一张图像的曝光。
- 当第一次曝光开始时,Counter 1 从 0 增加到 1,因为它被配置为进行曝光开始事件计数。
- 当第一次曝光结束时,即,当曝光激活信号下降时,定序器会推进到定序器集 0。
- 对于接下来的 8 次图像采集,定序器在定序器集 0 和定序器集 1 之间交替,计数器值继续增加。每当曝光结束时,即当曝光激活信号下降时,定序器就会推进。
- 当第 10幅 图像开始曝光时,Counter 达到其最大值(
CounterDuration= 10),随后重置,并且相机发送一个 Counter 1 End 信号。这会使 Sequencer 在路径 1 上前进至 set 2 之前 路径 0 的 Trigger Source 条件(ExposureActive,FallingEdge)变为有效。 - 现在,定序器已返回定序器集 2,并重复上述过程。
示例 3:运行时选择#
您可以设置定序器以根据需要在运行时选择定序器集。
这涉及将多条 I/O 线配置为 Trigger Source 并使用 LevelLow 和 LevelHigh 的选项 SequencerTriggerActivation 参数。
假设您想要使用输入线路 2 和 3 的信号状态(0 = 低电平,1 = 高电平)来控制定序器集选择。根据线路的状态,您希望定序器按如下方式操作:
| 信号状态线路 2 | 信号状态线路 3 | 精选集 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 2 |
| 1 | 1 | 3 |
为此,按如下方式设置定序器:
| Sequencer 集选择器 | Sequencer 路径选择器 | Sequencer Trigger Source | Sequencer Trigger Activation | 下一个 Sequencer 集 |
|---|---|---|---|---|
| 0 | 0 | Line3 | LineHigh | 1 |
| 0 | 1 | Line2 | LineHigh | 2 |
| 1 | 0 | Line3 | LineLow | 0 |
| 1 | 1 | Line2 | LineHigh | 3 |
| 2 | 0 | Line3 | LineHigh | 3 |
| 2 | 1 | Line2 | LineLow | 0 |
| 3 | 0 | Line3 | LineLow | 2 |
| 3 | 1 | Line2 | LineLow | 1 |
下面概述了如上所示设置定序器会发生什么情况:
- 只要这两个信号保持低电平,Line 2 和 Line 3 上的触发器就会保持处于非活动状态,因为它们的 Trigger Activation 设置为
LineHigh。请参见表第 1 行和第 2 行。因此,Sequencer 保持在 set 0。 - 当 Line 3 上的信号上升时,
LineHighactivation 发生,Sequencer 立即从 set 0 前进至 set 1。请参见表第 1 行。随后,由于 Line 2 仍为低电平,Sequencer 保持在 set 1。 - 当线路 2 上的信号也上升时,定序器会从定序器集 1 推进到定序器集 3。请参阅表的第 4 行。
- 当线路 2 上的信号下降时,定序器会推进回到定序器集 1。请参阅表的第 8 行。
- 当线路 3 上的信号也下降时,定序器会推进回到定序器集 0。请参阅表的第 3 行。
信息
- 如果您同时更改两条线路上的 I/O 信号,这也有效,比方说,将两条 I/O 线路的状态从高切换到低。
- 图像采集必须单独触发。当 I/O Line Status 改变时,定序器可能在帧之间推进多次。
示例代码#
// ** Populating 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);
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
camera.SequencerMode.SetValue(SequencerMode_Off);
camera.SequencerConfigurationMode.SetValue(SequencerConfigurationMode_On);
// Set the start set to set 0
camera.SequencerSetStart.SetValue(0);
// Load and configure sequencer set 0
camera.SequencerSetSelector.SetValue(0);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
camera.SequencerSetNext.SetValue(1);
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Line3);
camera.SequencerTriggerActivation.SetValue(SequencerTriggerActivation_RisingEdge);
// Save the changes
camera.SequencerSetSave.Execute();
// Load and configure sequencer set 1
camera.SequencerSetSelector.SetValue(1);
camera.SequencerSetLoad.Execute();
camera.SequencerPathSelector.SetValue(0);
camera.SequencerSetNext.SetValue(0);
camera.SequencerTriggerSource.SetValue(SequencerTriggerSource_Line3);
camera.SequencerTriggerActivation.SetValue(SequencerTriggerActivation_RisingEdge);
// Save the changes
camera.SequencerSetSave.Execute();
// Enable sequencer mode to operate the sequencer
camera.SequencerMode.SetValue(SequencerMode_On);
INodeMap& nodemap = camera.GetNodeMap();
// ** Populating the Sequencer Sets **
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Configure parameters to be stored in the first sequencer set
CIntegerParameter(nodemap, "Width").SetValue(600);
CIntegerParameter(nodemap, "Height").SetValue(300);
// Select sequencer set 0 and save the parameter values
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Configure parameters to be stored in the second sequencer set
CIntegerParameter(nodemap, "Width").SetValue(800);
CIntegerParameter(nodemap, "Height").SetValue(600);
// Select sequencer set 1 and save the parameter values
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(1);
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
CEnumParameter(nodemap, "SequencerMode").SetValue("Off");
CEnumParameter(nodemap, "SequencerConfigurationMode").SetValue("On");
// Set the start set to set 0
CIntegerParameter(nodemap, "SequencerSetStart").SetValue(0);
// Load and configure sequencer set 0
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(0);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(0);
CIntegerParameter(nodemap, "SequencerSetNext").SetValue(1);
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("Line3");
CEnumParameter(nodemap, "SequencerTriggerActivation").SetValue("RisingEdge");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Load and configure sequencer set 1
CIntegerParameter(nodemap, "SequencerSetSelector").SetValue(1);
CCommandParameter(nodemap, "SequencerSetLoad").Execute();
CIntegerParameter(nodemap, "SequencerPathSelector").SetValue(0);
CIntegerParameter(nodemap, "SequencerSetNext").SetValue(0);
CEnumParameter(nodemap, "SequencerTriggerSource").SetValue("Line3");
CEnumParameter(nodemap, "SequencerTriggerActivation").SetValue("RisingEdge");
// Save the changes
CCommandParameter(nodemap, "SequencerSetSave").Execute();
// Enable sequencer mode to operate the sequencer
CEnumParameter(nodemap, "SequencerMode").SetValue("On");
// ** Populating the Sequencer Sets **
// Enable sequencer configuration mode
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);
// ** Configuring sequencer set advance **
// Assume you want to alternate between sequencer sets 0 and 1 using input line 3
// Enable sequencer configuration mode
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.SequencerMode.Off);
camera.Parameters[PLCamera.SequencerConfigurationMode].SetValue(PLCamera.SequencerConfigurationMode.On);
// Set the start set to set 0
camera.Parameters[PLCamera.SequencerSetStart].SetValue(0);
// Load and configure sequencer set 0
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(1);
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Line3);
camera.Parameters[PLCamera.SequencerTriggerActivation].SetValue(PLCamera.SequencerTriggerActivation.RisingEdge);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Load and configure sequencer set 1
camera.Parameters[PLCamera.SequencerSetSelector].SetValue(1);
camera.Parameters[PLCamera.SequencerSetLoad].Execute();
camera.Parameters[PLCamera.SequencerPathSelector].SetValue(0);
camera.Parameters[PLCamera.SequencerSetNext].SetValue(0);
camera.Parameters[PLCamera.SequencerTriggerSource].SetValue(PLCamera.SequencerTriggerSource.Line3);
camera.Parameters[PLCamera.SequencerTriggerActivation].SetValue(PLCamera.SequencerTriggerActivation.RisingEdge);
// Save the changes
camera.Parameters[PLCamera.SequencerSetSave].Execute();
// Enable sequencer mode to operate the sequencer
camera.Parameters[PLCamera.SequencerMode].SetValue(PLCamera.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 */
/* ** Populating the Sequencer Sets ** */
/* Enable sequencer configuration mode */
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);
/* ** Configuring sequencer set advance ** */
/* Assume you want to alternate between sequencer sets 0 and 1 using input line 3 */
/* Enable sequencer configuration mode */
errRes = PylonDeviceFeatureFromString(hdev, "SequencerMode", "Off");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerConfigurationMode", "On");
CHECK(errRes);
/* Set the start set to set 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetStart", 0);
CHECK(errRes);
/* Load and configure sequencer set 0 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 0);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 1);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Line3");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerActivation", "RisingEdge");
CHECK(errRes);
/* Save the changes */
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetSave");
CHECK(errRes);
/* Load and configure sequencer set 1 */
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetSelector", 1);
CHECK(errRes);
errRes = PylonDeviceExecuteCommandFeature(hdev, "SequencerSetLoad");
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerPathSelector", 0);
CHECK(errRes);
errRes = PylonDeviceSetIntegerFeature(hdev, "SequencerSetNext", 0);
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerSource", "Line3");
CHECK(errRes);
errRes = PylonDeviceFeatureFromString(hdev, "SequencerTriggerActivation", "RisingEdge");
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);
# ** Populating the Sequencer Sets **
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Configure parameters to be stored in the first sequencer set
camera.Width.Value = 600
camera.Height.Value = 300
# Select sequencer set 0 and save the parameter values
camera.SequencerSetSelector.Value = 0
camera.SequencerSetSave.Execute()
# Configure parameters to be stored in the second sequencer set
camera.Width.Value = 800
camera.Height.Value = 600
# Select sequencer set 1 and save the parameter values
camera.SequencerSetSelector.Value = 1
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
# ** Configuring sequencer set advance **
# Assume you want to alternate between sequencer sets 0 and 1 using input line 3
# Enable sequencer configuration mode
camera.SequencerMode.Value = "Off"
camera.SequencerConfigurationMode.Value = "On"
# Set the start set to set 0
camera.SequencerSetStart.Value = 0
# Load and configure sequencer set 0
camera.SequencerSetSelector.Value = 0
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 0
camera.SequencerSetNext.Value = 1
camera.SequencerTriggerSource.Value = "Line3"
camera.SequencerTriggerActivation.Value = "RisingEdge"
# Save the changes
camera.SequencerSetSave.Execute()
# Load and configure sequencer set 1
camera.SequencerSetSelector.Value = 1
camera.SequencerSetLoad.Execute()
camera.SequencerPathSelector.Value = 0
camera.SequencerSetNext.Value = 0
camera.SequencerTriggerSource.Value = "Line3"
camera.SequencerTriggerActivation.Value = "RisingEdge"
# Save the changes
camera.SequencerSetSave.Execute()
# Enable sequencer mode to operate the sequencer
camera.SequencerMode.Value = "On"
您也可以使用 pylon Viewer 轻松设置参数。