Light Control#
该功能所基于的 SLP 协议支持相机和光源设备直接相互通信。
如果您使用 Basler Standard Light 或其他制造商提供的 LED 照明解决方案,您需要 Basler SLP Strobe Controller 来实现相机和光源之间的通信。
如果您使用 Basler Camera Light,由于其中已经包含了控制器功能,因此不需要单独的控制器。
信息
For dart M cameras, the Light Control feature is currently only available if you use a Basler dart M interface board (either the Interface Board dart M GigE RJ45 PoE or the Interface Board dart M GigE RJ45 AUX).
该功能的使用#
配置光源设备#
要配置您的光源设备:
-
使用 pylon Viewer 时,请确保选择了功能窗格中的轮询选项:
-
确保相机空闲,即未在捕获图像。
- 如果尚未连接照明设备和控制器,请执行连接。
- 设置
BslLightControlMode
parameter to在
. - Execute the
BslLightControlEnumerateDevices
command.
This enables light device communication via GPIO line and assigns a light device ID. - If you have multiple light devices in your environment, set the
BslLightDeviceSelector
parameter to the device that you want to configure.
Make sure the device is properly connected, i.e., theBslLightDeviceErrorStatus
parameter returnsNoError
. -
如果您使用 Basler SLP Strobe Controller:
- 设置
BslLightDeviceControlMode
parameter to specify how you want to control the light device.
Every light can be controlled via current control (电流
). For lights designed for a 12 VDC or 24 VDC connection, it is recommended to use voltage control (Voltage12V
或Voltage24V
). - 设置
BslLightDeviceOperationMode
parameter to熄灭
. -
设置
BslLightDeviceMaxCurrent
parameter to the nominal current rating of your light in continuous operation (in mA).注意 – 指定过高的标称额定电流会损坏您的光源。
使用电流控制时,请确保指定您的光源可以承受的标称额定电流。
否则,您的光源会在工作时损坏。
- 设置
-
设置
BslLightDeviceBrightness
parameter to the desired brightness.
A value of 100.0 corresponds to 100 % of the nominal current rating of your light device. 50 % reduces the current by a factor of 2. You can also set the brightness to more than 100 %. This is called overdriving. - 设置
BslLightDeviceOperationMode
参数设置为所需模式:在
: Makes the light shine continuously.Strobe
: Sets the light to strobe mode.
- 如果需要,请将设置保存在用户设置中。
信息
- If you use a Basler Camera Light, the
BslLightDeviceControlMode
andBslLightDeviceMaxCurrent
parameters are set automatically. - 在您每次从电流切换到电压时(反之亦然),控制器存在短暂的初始化阶段,在此期间,连接的光源设备将亮起。此阶段可能会持续长达 15 s,这是正常现象。
频闪模式#
频闪模式允许您在需要时操作闪光灯等照明设备,而不是连续操作它。
使用频闪模式具有以下优点:
- 它可以帮助延长光源的预期寿命。通过仅在需要时打开光源,LED 中产生的热量更少。这减慢了光源的老化过程。
- 在频闪模式下,您可以使光源过载,也就是说,将提供的电流最大增加到 500%(对于光源控制器),从而增加光源的亮度。
To enable strobe mode, select a light device and set the BslLightDeviceOperationMode
parameter to Strobe
.
配置触发信号和频闪持续时间#
一般来说,触发光源设备的工作原理如下:
- 最初,光源已关闭。
- 光源由触发信号打开。
- 光源保持打开一段时间,即频闪持续时间。
- 频闪持续时间结束后,光源将再次关闭。
ace 2, boost R, and dart M Cameras#
To configure the trigger signals and strobe duration on ace 2, boost R, and dart M cameras:
- 设置
BslLightControlTriggerSource
parameter to the source that you want to use to turn on the connected lights, e.g.,FlashWindow
. - 如果适用,请设置
BslLightControlTriggerActivation
参数设置为以下值:RisingEdge
(default): All connected lights are turned on when the signal rises, i.e., when the signal status changes from low to high.FallingEdge
: All connected lights are turned on when the signal falls, i.e., when the signal status changes from high to low.AnyEdge
: All connected lights are turned on when the signal falls or rises.
- 设置
BslLightDeviceStrobeMode
参数设置为以下值:自动
: The strobe duration is controlled by the camera's flash window duration (BslFlashWindowDuration
parameter). TheBslLightDeviceStrobeDuration
parameter becomes read-only and displays the calculated strobe duration.手动
: You can define the strobe duration yourself using theBslLightDeviceStrobeDuration
parameter.
- If you chose the
手动
strobe mode, set theBslLightDeviceStrobeDuration
parameter to the desired strobe duration (in microseconds).
信息
- 如果您使用的是触发宽度 Exposure Mode 或 Exposure Auto Auto Functions,请勿使用自动频闪模式。否则,相机和光源可能会表现出不可预测的行为。
- 如果您使用的是 Sequencer 功能,则自动频闪模式不可用。
- 在自动频闪模式下,计算出的频闪持续时间可能比闪烁窗口持续时间短。这样做是为了补偿光源打开所需的时间,即打开延迟。
- 如果您在达到相机性能上限时操作相机,则可能会出现过度触发。
ace U/L 相机#
要配置 ace U/L 相机上的触发信号和频闪持续时间:
-
If you're using a rolling shutter camera, set the
BslLightControlTriggerMode
参数设置为以下值:ExposureActive
: All connected lights are turned on when exposure starts. Use this mode only if you're not overlapping image acquisitions.FlashWindow
: All connected lights are turned on when the camera's 闪烁窗口 signal rises. If you use this mode, make sure that the Flash Window signal is available for your camera model.
在全局快门相机上,曝光开始时所有连接的光源总是会打开。
-
设置
BslLightDeviceStrobeMode
参数设置为以下值:自动
: The strobe duration is controlled by theExposureTime
parameter of the camera.手动
: You can define the strobe duration yourself using theBslLightDeviceStrobeDuration
parameter.
- If you chose the
手动
strobe mode, set theBslLightDeviceStrobeDuration
parameter to the desired strobe duration.
信息
- 如果您使用的是触发宽度 Exposure Mode、Sequencer 功能或 Gain Auto 或 Exposure Auto Auto Functions,则自动频闪模式不可用。
- 如果您在达到相机性能上限时操作相机,则可能会出现过度触发。
使光源设备过载#
注意 – 过载可能会损坏您的光源。
请仔细阅读本节中的说明,以免损坏连接的光源,并确保光源不会过早老化。
使光源过载意味着您可以增加电流,从而在光源处于频闪模式时提高光源强度。
要使光源设备过载:
-
如果您使用的是 Basler Standard Light 或第三方光源设备:
- Calculate the maximum allowed current for your device given the current duty cycle and strobe duration. On Basler ace 2, boost R, and dart M cameras, you can read the
BslLightDeviceDutyCycle
parameter to determine the current duty cycle. - 设置
BslLightDeviceOverdriveLimit
parameter accordingly. For example, if your light can withstand 200 % of its nominal current rating, set the overdrive limit to 200.0.
If you're using a Basler Camera Light, the overdrive limit is calculated automatically, and the
BslLightDeviceOverdriveLimit
parameter is not available. - Calculate the maximum allowed current for your device given the current duty cycle and strobe duration. On Basler ace 2, boost R, and dart M cameras, you can read the
-
设置
BslLightDeviceBrightness
to a value greater than 100.0.
过载时,请考虑以下几个方面,以免损坏您的光源:
- 如果不确定光源在频闪模式下可以承受的最大电流,请与光源的制造商联系。
- 由于增加的电流会导致 LED 发热量增大,因此必须在各次频闪脉冲之间留出足够的时间,以保证光源再次冷却。根据经验,脉冲强度越高,两次脉冲之间应留出的时间越长。
- 考虑曝光时间,因为这会影响脉冲的长度和占空比。
安全功能#
以下安全功能在 Basler 照明设备中实现,以避免损坏硬件:
SLP Light Controller 上的安全功能#
大于 2 A 的电流以及较长的 Exposure Time 和高占空比可能会损坏控制器硬件。
To avoid this, you can't set the nominal current (BslLightDeviceMaxCurrent
parameter) of Basler SLP Light Controllers to more than 2000 mA.
不过,如果使设备过载,最终电流可能会超过 2 A。
在这种情况下,相机会自动调整某些照明设备设置的最大值。请参阅下表。
输出电流(标称电流 x 亮度 %) | 最大频闪持续时间 | 最大占空比 |
---|---|---|
2 A 以下 | - | 100 % |
2 A to <3 A | 5 ms | 15 % |
3 A to <4 A | 5 ms | 8 % |
4 A to <5 A | 5 ms | 6 % |
5 A to <6 A | 5 ms | 4 % |
6 A to <8 A | 1 ms | 4 % |
8 A to <9 A | 1 ms | 3 % |
9 A to <10 A | 1 ms | 2 % |
Camera Lights 上的安全功能#
在 Basler Camera Lights 上,如果所选亮度相对于频闪持续时间和占空比过高,则频闪持续时间将减少,或者触发将被忽略。请参阅下表。
所需亮度 | 最大频闪持续时间 | 最大占空比 |
---|---|---|
0–100 % | - | 100 % |
101-200 % | 30 ms | 30 % |
201-300 % | 10 ms | 20 % |
301-500 % | 2 ms | 10 % |
501-1000 % | 1 ms | 5 % |
GPIO 线路配置#
相机通过相机的一条 GPIO 线路与照明设备通信:
-
在 ace 2, boost R, and dart M cameras, the camera always uses Line 3 for light communication. Accordingly, when the Light Control feature is enabled, the line mode of Line 3 is set to
InOut
和 line connection is set toLightControl
. -
在 ace U/L cameras, the
BslLightControlSource
parameter shows which GPIO line the camera uses for light communication.
光源设备 ID#
每个通过 SLP 协议连接的光源设备都有一个光源设备 ID。ID 存储在设备上。
有效的光源设备 ID 为 1、2、3、4 和 7。所有设备随附的 ID 均设置为 7(出厂设置)。
When enumerating devices using the BslLightControlEnumerateDevices
command, the camera automatically searches for a device with its ID set to 7 and assigns the next available ID between 1 and 4 to it.
如果使用多个光源设备,则必须确保它们的 ID 都不同。使用具有相同 ID 的设备会导致通信错误。
- 示例 1:假设您连接一个新的光源设备并枚举设备。相机将 ID 1 分配给设备。然后,断开该设备的连接,连接下一个光源设备,然后再次枚举设备。相机还会将 ID 1 分配给该设备。
- 示例 2:假设您连接两个新的光源设备并枚举设备。相机找到两个 ID 设置为 7 的设备,并将下一个可用 ID 分配给每个设备,即 1。
在这两个示例中,当您将两个照明设备连接到相机时,都会发生通信错误。您必须更改其中一个 ID 才能解决冲突。
提示
防止冲突的最佳方法是依次连接设备,并在连接设备后始终分配一个新的唯一 ID。
更改光源设备 ID#
要更改光源的 ID:
- 设置
BslLightControlMode
parameter to在
. - 设置
BslLightDeviceOperationMode
parameter to熄灭
. - 设置
BslLightDeviceSelector
parameter to the Basler light device whose ID you want to change. - 设置
BslLightDeviceChangeID
parameter to the desired ID, e.g.,Device1
.
在 ace U/L cameras, the ID is changed immediately. - 在 ace 2, boost R, and dart M cameras, execute the
BslLightDeviceNewIDSave
command.
Light Control 功能使用注意事项#
- When the
BslLightControlMode
is set to在
, the Serial Communication feature is disabled. This is because the Light Control feature also uses serial communication. - Basler Camera Lights use pulse width modulation (PWM), the Basler SLP Strobe Controller doesn't. If you're using very short exposure times (<500 µs) and a brightness value other than 100 %, PWM can lead to brightness fluctuations or to stripes in rolling shutter cameras.
- 避免使用非常短的闪烁窗口信号。否则,生成的图像中的某些线条可能太亮,而另一些线条可能太暗。
- When setting the
BslLightControlMode
parameter to在
, there is a delay of up to 1 second until the light device is actually turned on. Because of this, the first image may be too dark. Either discard this image, or, if you need all images, start image acquisition after a suitable delay. - 如果使 Basler Camera Light 过载,请不要以超过每秒 60 帧的速度操作相机。否则,相机和光源设备可能会表现出不可预测的行为。
- Basler ace 2, boost R, and dart M cameras: When loading the light device settings from a user set, the settings are only applied after executing the
BslLightControlEnumerateDevices
command.
过度触发#
如果您在达到相机性能上限时操作相机,则可能会发生光源设备的过度触发。过度触发表示光源设备接收到未准备好接收的触发,例如,因为其仍处在关闭光源的过程中。这意味着触发将被忽略且该光源在下次曝光时不会亮起。
为了更好地理解此问题,请参考以下示例。
具有 100 fps 速度的相机在 Exposure Time 设置为 50 ms 的情况下运行。因此,相机可以每秒 20 帧进行快速连续采集,而曝光之间不会暂停。这意味着必须正好在两次曝光之间的边沿触发光源设备。
实际上,这几乎是无法实现的,因为固有抖动会造成以下情况:有时在触发信号达到时,光源仍关闭。在这种情况下,触发将被忽略且生成的图像太暗。
由于抖动是不规则的,没有精确的方法可防止此情况的发生。如果您注意到其中一些图像比其他的要暗,请考虑以连续模式操作光源。您还可以尝试使用 Acquisition Frame Rate 功能调整帧速率。
监控过度触发#
在 ace 2, boost R, and dart M cameras, the BslLightControlOvertriggerCount
parameter is available. It allows you to monitor how many trigger signals were sent while at least one of the connected light devices wasn't ready for it.
示例: Assume 4 light devices are connected to your camera. You send a trigger signal while 3 of the devices aren't ready for it. As a result, the BslLightControlOvertriggerCount
parameter increases by 1.
该参数计数到最大值 65 535,然后停止计数。
To reset the overtrigger counter, execute the BslLightControlOvertriggerCountReset
command.
检查和清除错误#
ace 2, boost R, and dart M Cameras#
Basler ace 2, boost R, and dart M cameras can read the following error data from connected light devices:
- 错误状态可以帮助您自行更正错误。
- 错误代码提供了有关错误类型的附加信息,且可以由 Basler 支持人员进行评估。
要检查并清除错误:
- 如果您连接了多个设备:
- Check the
BslLightControlErrorSummary
parameter to find out which device is experiencing problems, e.g.,Device2
. - 设置
BslLightDeviceSelector
parameter to the device that is experiencing problems.
- Check the
- Get the value of the
BslLightDeviceErrorStatus
parameter and look up its meaning in the 错误状态 table below. - 如果错误状态为“硬件错误”:
- Execute the
BslLightDeviceErrorStatusReadAndClear
command. - Get the value of the
BslLightDeviceErrorCode
parameter and look up its meaning in the Error Codes table below. - 如果可能的话,请更正错误。
- Execute the
- If the error status is not "Hardware Error":
- 如果可能的话,请更正错误。
- Execute the
BslLightDeviceErrorStatusReadAndClear
command to reset the error status toNoError
.
错误状态#
即: BslLightDeviceErrorStatus
parameter can take the following values:
值 | 含义 |
---|---|
通信故障 | 如果光源设备和相机之间的数据传输错误,则会发生通信错误。原因可能是使用了过长的线缆或线路上的噪音过大。 |
连接丢失 | 与先前连接的光源设备的连接已丢失。例如,如果电缆松动,就会发生这种情况。 |
硬件错误 | The light device is experiencing a technical fault. For more information about the kind of hardware error, execute the BslLightDeviceErrorStatusReadAndClear command to retrieve an error code.a |
光源设备错误 | 光源设备遇到内部错误。a |
无错误 | 未检测到错误。 |
未连接 | The light device is not connected to the camera or has not been enumerated yet. Execute the BslLightControlEnumerateDevices command to enumerate the device. |
不支持的设备版本 | 该光源设备与当前相机不兼容。请联系支持人员以了解固件更新是否可用。 |
Error Codes#
即: BslLightDeviceErrorCode
parameter can take the following values:
值 | 含义 |
---|---|
0x30024 | 光源控制器的照明连接器存在短路。这可能是由于光源设备故障造成的。 |
0x3002A | The light controller is unable to supply the requested current. Try lowering the BslLightDeviceCurrent parameter value. |
(其他) | 请联系 Basler 支持人员并提供该错误代码。 |
ace U/L 相机#
Basler ace U/L 相机可以从连接的光源设备读取错误列表。
最多可以存储 25 个错误。如果发生第 26 个错误,则最早的错误将被覆盖,依此类推。
检查和清除错误是一个反复迭代过程,具体取决于发生了多少个错误。
要检查并清除错误:
- 如果您连接了多个设备:
- Check the
BslLightControlErrorStatus
parameter to find out which device is experiencing problems, e.g.,Device2
. - 设置
BslLightDeviceSelector
parameter to the device that is experiencing problems.
- Check the
- Get the value of the
BslLightDeviceLastError
parameter and look up its meaning in the table below. - 更正相应的错误。
- To delete the last error from the list of errors, execute the
BslLightDeviceClearLastError
command. - Continue getting and deleting the last error until the
BslLightDeviceLastError
parameter showsNoError
.
值 | 含义 |
---|---|
通信故障 | 如果光源设备和相机之间的数据传输错误,则会发生通信错误。原因可能是使用了过长的线缆或线路上的噪音过大。 |
连接错误 | 如果光源设备和相机之间的连接断开或发生了通信错误,则会发生连接错误。其他原因还可能包括连接松动或控制器完全断开。 |
硬件错误 | 光源设备出现技术故障。a |
电流不足 | The light controller is unable to supply the requested current. Try lowering the LightDeviceMaxCurrent parameter value. |
无错误 | 自上次清除错误内存以来,光源设备未检测到任何错误。 |
短路 | 光源控制器的照明连接器存在短路。这可能是由于光源设备故障造成的。 |
-
断开并重新连接电源可以解决此问题。为确保重启,需要将控制器断开电源五分钟。这是正常现象。如果您使用多个控制器,即使其他控制器没有遇到任何故障,也必须重启其他控制器的电源。
示例代码#
ace 2, boost R, dart M Cameras#
// Enable the light control mode
camera.BslLightControlMode.SetValue(BslLightControlMode_On);
//Enumerate the light devices
camera.BslLightControlEnumerateDevices.Execute();
//Select light device 1
camera.BslLightDeviceSelector.SetValue(BslLightDeviceSelector_Device1);
//Set the nominal current of device 1 to 100 mA
camera.BslLightDeviceCurrent.SetValue(100.0);
//Set the brightness to 100 %
camera.BslLightDeviceBrightness.SetValue(100.0);
//Set the operation mode to Strobe
camera.BslLightDeviceOperationMode.SetValue(BslLightDeviceOperationMode_Strobe);
INodeMap& nodemap = camera.GetNodeMap();
// Enable the light control mode
CEnumParameter(nodemap, "BslLightControlMode").SetValue("On");
// Enumerate the light devices
CCommandParameter(nodemap, "BslLightControlEnumerateDevices").Execute();
// Select light device 1
CEnumParameter(nodemap, "BslLightDeviceSelector").SetValue("Device1");
// Set the nominal current of device 1 to 100 mA
CFloatParameter(nodemap, "BslLightDeviceCurrent").SetValue(100.0);
// Set the brightness to 100 %
CFloatParameter(nodemap, "BslLightDeviceBrightness").SetValue(100.0);
// Set the operation mode to Strobe
CEnumParameter(nodemap, "BslLightDeviceOperationMode").SetValue("Strobe");
// Enable the light control mode
camera.Parameters[PLCamera.BslLightControlMode].SetValue(PLCamera.BslLightControlMode.On);
// Enumerate the light devices
camera.Parameters[PLCamera.BslLightControlEnumerateDevices].Execute();
// Select light device 1
camera.Parameters[PLCamera.BslLightDeviceSelector].SetValue(PLCamera.BslLightDeviceSelector.Device1);
// Set the nominal current of device 1 to 100 mA
camera.Parameters[PLCamera.BslLightDeviceCurrent].SetValue(100.0);
// Set the brightness to 100 %
camera.Parameters[PLCamera.BslLightDeviceBrightness].SetValue(100.0);
// Set the operation mode to Strobe
camera.Parameters[PLCamera.BslLightDeviceOperationMode].SetValue(PLCamera.BslLightDeviceOperationMode.Strobe);
/* 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 */
/* Enable the light control mode */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightControlMode", "On");
CHECK(errRes);
/* Enumerate the light devices */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslLightControlEnumerateDevices");
CHECK(errRes);
/* Select light device 1 */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightDeviceSelector", "Device1");
CHECK(errRes);
/* Set the nominal current of device 1 to 100 mA */
errRes = PylonDeviceSetFloatFeature(hdev, "BslLightDeviceCurrent", 100.0);
CHECK(errRes);
/* Set the brightness to 100 % */
errRes = PylonDeviceSetFloatFeature(hdev, "BslLightDeviceBrightness", 100.0);
CHECK(errRes);
/* Set the operation mode to Strobe */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightDeviceOperationMode", "Strobe");
CHECK(errRes);
# Enable the light control mode
camera.BslLightControlMode.Value = "On"
# Enumerate the light devices
camera.BslLightControlEnumerateDevices.Execute()
# Select light device 1
camera.BslLightDeviceSelector.Value = "Device1"
# Set the nominal current of device 1 to 100 mA
camera.BslLightDeviceCurrent.Value = 100.0
# Set the brightness to 100 %
camera.BslLightDeviceBrightness.Value = 100.0
# Set the operation mode to Strobe
camera.BslLightDeviceOperationMode.Value = "Strobe"
您也可以使用 pylon Viewer 轻松设置参数。
ace U/L 相机#
// Enable the light control mode
camera.BslLightControlMode.SetValue(BslLightControlMode_On);
//Enumerate the light devices
camera.BslLightControlEnumerateDevices.Execute();
//Select light device 1
camera.BslLightDeviceSelector.SetValue(BslLightDeviceSelector_Device1);
//Set the nominal current of device 1 to 100 mA
camera.BslLightDeviceMaxCurrent.SetValue(100.0);
//Set the brightness to 100 %
camera.BslLightDeviceBrightness.SetValue(100.0);
//Set the operation mode to Strobe
camera.BslLightDeviceOperationMode.SetValue(BslLightDeviceOperationMode_Strobe);
INodeMap& nodemap = camera.GetNodeMap();
// Enable the light control mode
CEnumParameter(nodemap, "BslLightControlMode").SetValue("On");
// Enumerate the light devices
CCommandParameter(nodemap, "BslLightControlEnumerateDevices").Execute();
// Select light device 1
CEnumParameter(nodemap, "BslLightDeviceSelector").SetValue("Device1");
// Set the nominal current of device 1 to 100 mA
CFloatParameter(nodemap, "BslLightDeviceMaxCurrent").SetValue(100.0);
// Set the brightness to 100 %
CFloatParameter(nodemap, "BslLightDeviceBrightness").SetValue(100.0);
// Set the operation mode to Strobe
CEnumParameter(nodemap, "BslLightDeviceOperationMode").SetValue("Strobe");
// Enable the light control mode
camera.Parameters[PLCamera.BslLightControlMode].SetValue(PLCamera.BslLightControlMode.On);
// Enumerate the light devices
camera.Parameters[PLCamera.BslLightControlEnumerateDevices].Execute();
// Select light device 1
camera.Parameters[PLCamera.BslLightDeviceSelector].SetValue(PLCamera.BslLightDeviceSelector.Device1);
// Set the nominal current of device 1 to 100 mA
camera.Parameters[PLCamera.BslLightDeviceMaxCurrent].SetValue(100.0);
// Set the brightness to 100 %
camera.Parameters[PLCamera.BslLightDeviceBrightness].SetValue(100.0);
// Set the operation mode to Strobe
camera.Parameters[PLCamera.BslLightDeviceOperationMode].SetValue(PLCamera.BslLightDeviceOperationMode.Strobe);
/* 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 */
/* Enable the light control mode */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightControlMode", "On");
CHECK(errRes);
/* Enumerate the light devices */
errRes = PylonDeviceExecuteCommandFeature(hdev, "BslLightControlEnumerateDevices");
CHECK(errRes);
/* Select light device 1 */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightDeviceSelector", "Device1");
CHECK(errRes);
/* Set the nominal current of device 1 to 100 mA */
errRes = PylonDeviceSetFloatFeature(hdev, "BslLightDeviceMaxCurrent", 100.0);
CHECK(errRes);
/* Set the brightness to 100 % */
errRes = PylonDeviceSetFloatFeature(hdev, "BslLightDeviceBrightness", 100.0);
CHECK(errRes);
/* Set the operation mode to Strobe */
errRes = PylonDeviceFeatureFromString(hdev, "BslLightDeviceOperationMode", "Strobe");
CHECK(errRes);
# Enable the light control mode
camera.BslLightControlMode.Value = "On"
# Enumerate the light devices
camera.BslLightControlEnumerateDevices.Execute()
# Select light device 1
camera.BslLightDeviceSelector.Value = "Device1"
# Set the nominal current of device 1 to 100 mA
camera.BslLightDeviceMaxCurrent.Value = 100.0
# Set the brightness to 100 %
camera.BslLightDeviceBrightness.Value = 100.0
# Set the operation mode to Strobe
camera.BslLightDeviceOperationMode.Value = "Strobe"