コンテンツにスキップ
ステージングサーバー
開発サーバー

Light Control (ace U/L)#

Light Controlカメラ機能を使用すると、最大4台のライトデバイスを制御できます。

この機能は、SLP プロトコルに基づき、カメラと照明器具が互いに直接通信できるようにします。

このトピックでは、Basler ace U/Lカメラ、および移行期間中のBasler ace 2、boost R、dart MカメラのLight Control機能について説明します。

情報

内部SLPコントローラー非搭載のライトを使用する場合は、カメラとライト間の通信を有効にするために、Basler SLP Strobe Controllerなどの外部コントローラーが必要になります。

情報

旧世代のBasler Lightsと新しいBasler Lights:

旧世代のBasler Lightsは、ILC非搭載(インテリジェントライトコントロール非搭載)のライトでした。これらのライトには、ライトコントロール用の個別のコントローラーが必要でした。
旧世代のILC非搭載のBaslerライトおよび販売終了となったBasler Camera Lightsに関するマニュアルは、現在のBasler Product Documentationには含まれていません。このトピックにのみ、一部の情報が記載されています。これらの製品の詳細については、ここをクリックしてダウンロードできる、以前のバージョンのオフラインマニュアルを参照してください。

ace 2、boost R、dart Mカメラの移行期間#

Peripheral Devices Control機能の導入期間中は、ace 2、boost R、およびdart Mカメラには、従来のファームウェア、またはすでにPeripheral Devices Control機能が含まれているファームウェアのいずれかが搭載されて出荷される場合があります。

その結果、Light Controlに関するトピックが2つあります。

  • Light Control (ace U/L):
    このトピックは、Peripheral Devices Control機能を持たないファームウェアを使用し続けるace U/Lカメラに適用されます。Basler ace U/Lカメラは、新しいファームウェアアーキテクチャには移行されません。
    また、移行期間中にPeripheral Devices Control機能を持たないファームウェアで出荷されるace 2、boost R、およびdart Mカメラにも適用されます。
  • Light Controlのトピック:
    このトピックは、Peripheral Devices Control機能が含まれているファームウェアを実行しているカメラ(Basler ace 2、boost R、dart Mカメラ)に適用されます。このLight Control機能は、Optic Control機能とともにPeripheral Devices Control機能の一部として説明されています。
  • 移行期間中は、ace 2、boost R、およびdart Mカメラに、Peripheral Devices Control機能が含まれているファームウェア、または含まれていないファームウェアのいずれかが搭載されて出荷される場合があります。これらの製品シリーズのカメラは、より新しいファームウェアバージョンにアップグレードできます。カメラを新しいファームウェアに移行するには、Baslerサポートにお問い合わせください。

機能を使用する#

照明器具の設定#

Basler ace U/Lカメラまたは特定のカメラで使用できるようにライトデバイスを設定するには、次を行います。

  1. pylon Viewer を使用する場合は、[機能]ペインの[ポーリング]オプションが選択されていることを確認してください。

    pylon Viewer のポーリングオプション

  2. カメラがアイドル状態であること、つまり画像をキャプチャしていないことを確認します。

  3. まだ接続していない場合は、照明器具とコントローラーを接続します。
  4. パラメーターを BslLightControlMode パラメータを On.
  5. 実行します: BslLightControlEnumerateDevices コマンド。
    これにより、以下の手段でライトデバイスの通信が可能になります。 GPIO line および以下が割り当てられます。 light device ID.
  6. 環境内に 複数 のライトデバイスがある場合は、 BslLightDeviceSelector パラメータを設定して、設定するデバイスを指定します。
    デバイスが正しく接続されていることを確認します。つまり、 BslLightDeviceErrorStatus パラメータが以下を返します。 NoError.
  7. Basler SLP Strobe Controller を使用する場合は、次のようにします。

    1. パラメーターを BslLightDeviceControlMode パラメータを Current.
    2. パラメーターを BslLightDeviceOperationMode パラメータを Off.
    3. パラメーターを BslLightDeviceMaxCurrent パラメータに、連続動作時のライトの定格電流(mA)を設定します。

      注意 – 高すぎる公称電流定格を指定すると、照明が損傷する可能性があります。

      電流制御を使用する場合は、ライトが耐えられる公称電流定格を必ず指定してください。

      そうしないと、動作中にライトが損傷します。

  8. パラメーターを BslLightDeviceBrightness パラメータに希望の明るさを設定します。
    100.0の値は、ライトデバイスの定格電流の100 %に相当します。50 %に設定すると、電流が2分の1に減少します。明るさを100 %超に設定することもできます。これは オーバードライブ.

  9. パラメーターを BslLightDeviceOperationMode 目的のモードへのパラメーター:
    • Onと呼ばれます:ライトを連続点灯させます。
    • Strobe:ライトを ストロボモード.
  10. 必要な場合は、ユーザーセットに設定を保存します。

情報

  • Basler Camera Lightを使用する場合、 BslLightDeviceControlMode および BslLightDeviceMaxCurrent パラメータは自動的に設定されます。
  • 電流から電圧へ、またはその逆に切り替えるたびに、短時間のコントローラー初期化フェーズが発生し、その間は接続されている照明が点灯することに注意してください。これは最大 15 秒間持続する場合がありますが、通常の動作です。

ストロボモード#

ストロボモードを使用すると、照明器具を連続的に点灯しておくのではなく、必要なときにフラッシュのように動作させることができます。

ストロボモードを使用すると、次のような利点があります。

  • 照明の寿命を延ばすのに役立ちます。必要なときだけ照明を動作させることで、LED の発熱を抑えます。これにより、照明の劣化プロセスを遅らせることができます。
  • ストロボモードでは、照明をオーバードライブできます。つまり、供給電流を最大 500 %(照明コントローラーの場合)まで増大させることで、照明の明るさを上げます。

ストロボモードを有効にするには、ライトデバイスを選択して、 BslLightDeviceOperationMode パラメータを Strobe.

トリガー信号とストロボ持続期間の設定#

一般に、照明器具のトリガーは次のように動作します。

  • 最初はライトが消灯しています。
  • トリガー信号によりライトが点灯します。
  • ライトは一定時間点灯し続けます。これがストロボ持続時間です。
  • ストロボ持続時間が終了すると、ライトは再び消灯します。
ace 2、boost R、dart Mカメラ#

このセクションは、Peripheral Devices Control機能が含まれていないファームウェアで動作するace 2、boost R、およびdart Mカメラに適用されます。Peripheral Devices Control機能が含まれているファームウェアで出荷されるace 2、boost R、およびdart Mカメラについては、Peripheral Devices Controlの下にあるLight Controlのトピックを参照してください。

ace 2、boost R、およびdart Mカメラでトリガー信号とストロボ持続時間を設定するには:

  1. パラメーターを BslLightControlTriggerSource パラメータに、接続されたライトを点灯するために使用するソースを設定します。例: FlashWindow.
  2. If applicable, set the BslLightControlTriggerActivation パラメーターを次のいずれかの値に設定します。
    • RisingEdge (デフォルト):信号が入力されると、接続されているすべてのライトが点灯します。 立ち上がる(つまり、信号ステータスがLowからHighに変化する)ときにトリガーが有効になります。
    • FallingEdge: 信号が入力されると、接続されているすべてのライトが点灯します。 立ち下がる(つまり、信号ステータスがHighからLowに変化する)ときにトリガーが有効になります。
    • AnyEdge: 信号が入力されると、接続されているすべてのライトが点灯します。 立ち下がるまたは立ち上がる.
  3. パラメーターを BslLightDeviceStrobeMode パラメーターを次のいずれかの値に設定します。
    • Automatic: ストロボの発光時間は、カメラのフラッシュウィンドウ時間(BslFlashWindowDuration パラメータ)によって制御されます。この BslLightDeviceStrobeDuration パラメータは読み取り専用になり、計算されたストロボ発光時間が表示されます。
    • Manual: 次のパラメータを使用して、ストロボ発光時間を自分で定義できます: BslLightDeviceStrobeDuration パラメータ。
  4. ストロボモードを選択した場合は、 Manual パラメータを希望のストロボ発光時間(マイクロ秒)に設定します。 BslLightDeviceStrobeDuration パラメータを希望のストロボ発光時間に設定します。

情報

  • トリガー Width Exposure Mode またはExposure Autoオートファンクションを使用している場合は、自動ストロボモードを使用しないでください。そうでないと、カメラと照明が予期しない動作を示す可能性があります。
  • Sequencer 機能を使用している場合、自動ストロボモードは利用できません。
  • 自動ストロボモードでは、計算されたストロボ持続時間はフラッシュウィンドウ持続時間よりも短くなる可能性があります。これは、ライトが点灯するまでにかかる時間、つまり点灯遅延を補正するために行われます。
  • カメラがその能力の上限で動作している場合、オーバートリガーが発生する可能性があります。
ace U/Lカメラ#

ace U/L カメラでトリガー信号とストロボ持続時間を設定するには、次のようにします。

  1. カメラを使用している場合は、 ローリングシャッター を次のように設定します: BslLightControlTriggerMode パラメーターを次のいずれかの値に設定します。

    • ExposureActive: 露光開始時に接続されているすべてのライトが点灯します。このモードは、画像を オーバーラップ させて取得しない場合にのみ使用してください。
    • FlashWindow: カメラの Flash Window 信号が立ち上がると、接続されているすべてのライトが点灯します。このモードを使用する場合は、お使いのカメラモデルでフラッシュウィンドウ信号が利用可能であることを確認してください。

    グローバルシャッターカメラでは、露光が開始すると、接続されているすべての照明が常に点灯します。

  2. パラメーターを BslLightDeviceStrobeMode パラメーターを次のいずれかの値に設定します。

    • Automatic: ストロボ発光時間は、カメラの ExposureTime パラメータによって制御されます。
    • Manual: 次のパラメータを使用して、ストロボ発光時間を自分で定義できます: BslLightDeviceStrobeDuration パラメータ。
  3. ストロボモードを選択した場合は、 Manual パラメータを希望のストロボ発光時間(マイクロ秒)に設定します。 BslLightDeviceStrobeDuration パラメータを希望のストロボ発光時間に設定します。

情報

照明器具のオーバードライブ#

注意 – オーバードライブは照明を損傷する可能性があります。

このセクションの手順をよく読んで、接続されているライトの損傷を回避し、ライトが早期劣化しないようにしてください。

ライトをオーバードライブすると、ライトがストロボモードのときに、電流を増加させて、より高い光輝度を得ることができます。

照明器具をオーバードライブするには、次のようにします。

  1. レガシーBasler Lightまたはサードパーティ製のライトデバイスを使用している場合:

    1. 現在のデューティサイクルとストロボ持続時間に対して、デバイスに許可される最大電流を計算します。ファームウェアを実行しているBasler ace 2、boost R、およびdart Mカメラでは、 Peripheral Device Control 機能により、以下を読み取ることができます BslLightDeviceDutyCycle パラメータを読み取ることで、現在のデューティサイクルを確認できます。
    2. パラメーターを BslLightDeviceOverdriveLimit パラメータをそれに応じて設定します。たとえば、ライトが定格電流の200%に耐えられる場合、オーバードライブ制限を200.0に設定します。

    カメラを使用している場合は、 Basler Camera Lightでは、オーバードライブ制限が自動的に計算され、 BslLightDeviceOverdriveLimit パラメータは使用できません。

  2. パラメーターを BslLightDeviceBrightness を100.0より大きい値に設定します。

オーバードライブする場合は、ライトの損傷を避けるために次の点を考慮してください。

  • ストロボモードでライトが耐えられる最大電流が不明な場合は、ライトのメーカーに問い合わせてください。
  • 電流が増加すると LED がより加熱するため、個々のストロボパルス間にライトが再び冷却するまでの十分な時間を確保する必要があります。一般的な経験則として、パルスの輝度を高くするほど、パルス間の間隔を長く空ける必要があります。
  • 露光時間が、pulseの長さとデューティサイクルに影響を与える点を考慮してください。

安全機能#

ハードウェアの損傷を防ぐため、レガシーBaslerライトデバイスには次の安全機能が実装されています。

SLP 照明コントローラーの安全機能#

2 A を超える電流と長い露光時間および高いデューティーサイクルの組み合わせにより、コントローラーのハードウェアが損傷する可能性があります。

これを回避するため、定格電流(BslLightDeviceMaxCurrent Basler SLP Light Controllerのパラメータ)を2000 mA超に設定します。

ただし、デバイスをオーバードライブしている場合は、電流が 2 A を超える可能性があります。

この場合、カメラは特定の照明器具設定の最大値を自動的に調整します。次の表を参照してください。

出力電流(公称電流 x 明るさ(%)) 最大ストロボ持続時間 最大デューティサイクル
2A未満 - 100 %
2 A to <3 A 5ms 15 %
3 A to <4 A 5ms 8 %
4 A to <5 A 5ms 6 %
5 A to <6 A 5ms 4 %
6 A to <8 A 1ms 4 %
8 A to <9 A 1ms 3 %
9 A to <10 A 1ms 2 %
Camera Lights の安全機能#

Basler Camera Lights で、選択した明るさがストロボ持続時間およびデューティーサイクルに対して高すぎる場合、ストロボ持続時間が短くなるか、トリガーが無視されます。次の表を参照してください。

必要な明るさ 最大ストロボ持続時間 最大デューティサイクル
0~100% - 100 %
101~200% 30ms 30 %
201~300% 10ms 20 %
301~500% 2ms 10 %
501~1000% 1ms 5 %

GPIO ライン設定#

カメラは、カメラの GPIO ラインの 1 つを介して照明器具と通信します。

  • On ace 2、boost R、およびdart Mカメラファームウェアで実行されている インターネット接続のない Peripheral Devices Control機能では、カメラは常時以下を使用します ライン3 光通信用。したがって、Light Control機能が有効になっている場合、 ラインモード Line 3のプロパティは次のように設定されます: InOut および 回線接続 が次のように設定されている場合、自動的に無効になります: LightControl.
  • On ace U/Lカメラでは、 BslLightControlSource パラメータは、カメラが光通信にどのGPIOラインを使用しているかを示します。

照明器具 ID#

SLP プロトコルを介して接続されたすべての照明器具には、照明器具 ID があります。ID は器具に保存されています。

有効な照明器具 ID は、1、2、3、4、7 です。すべての照明器具は、ID が 7(工場出荷時設定)に設定されて出荷されています。

デバイスを列挙する際、 BslLightControlEnumerateDevices コマンドを使用すると、カメラはIDが7に設定されたデバイスを自動的に検索し、1から4の間の次に利用可能なIDをそのデバイスに割り当てます。

複数の照明器具を使用する場合は、それらの ID をすべて異なるものにする必要があります。ID が同じ器具を使用すると、通信エラーが発生します。

ヒント

競合を防ぐ最善の方法は、デバイスを 1 つずつ接続し、デバイスを接続した後は常に新しい一意の ID を割り当てることです。

  • 例 1:新しい 1 つの照明器具を接続し、複数の器具を列挙するとします。カメラはその新しい器具に ID 1 を割り当てます。次に、その器具を取り外し、別の照明器具を接続し、器具を再度列挙します。カメラはこの器具に再び ID 1 を割り当てます。
  • 例 2: 2 つの新しい照明器具を接続し、複数の器具を列挙するとします。カメラは、ID が 7 に設定されている 2 つの器具を検出し、割り当て可能な次の ID である 1 をそれぞれに割り当てます。

どちらの例でも、両方の照明器具をカメラに接続すると、通信エラーが発生します。競合を解決するには、ID の 1 つを変更する必要があります。

Light Device IDの変更#

ライトのIDを変更するには、次の手順に従います。

  1. パラメーターを BslLightControlMode パラメータを On.
  2. パラメーターを BslLightDeviceOperationMode パラメータを Off.
  3. パラメーターを BslLightDeviceSelector 変更したいIDを持つBaslerライティングデバイスに対してパラメータを設定します。
  4. パラメーターを BslLightDeviceChangeID パラメータを希望のID(例: Device1.
    On ace U/Lカメラ)に設定すると、IDが即座に変更されます。
  5. On ace 2、boost R、およびdart Mカメラファームウェアで実行されている インターネット接続のない Peripheral Devices Control機能を実行します BslLightDeviceNewIDSave コマンド。

Light Control 機能使用時の考慮事項#

  • カメラの BslLightControlMode が次のように設定されている場合、自動的に無効になります: Onでは、 Serial Communication 機能が無効になります。これは、Light Control機能も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.
  • 非常に短い Flash Window 信号の使用は避けてください。そうしないと、生成された画像内で一部の線が明るすぎ、それ以外の線が暗すぎるということになる可能性があります。
  • を設定する際、 BslLightControlMode パラメータを Onライティングデバイスが実際に点灯するまでに最大1秒の遅延が生じます。このため、最初の画像が暗すぎる場合があります。この画像を破棄するか、すべての画像が必要な場合は、適切な遅延の経過後に画像取得を開始してください。
  • Basler Camera Light をオーバードライブするときは、1 秒あたり 60 フレームを超える速度でカメラを動作させないでください。そうでないと、カメラと照明が予期しない動作を示す可能性があります。
  • ファームウェアで実行されているBasler ace 2、boost R、およびdart Mカメラ インターネット接続のない Peripheral Devices Control機能:
    次からライトデバイスの設定を読み込むとき ユーザーセットからライティングデバイスの設定を読み込む場合、設定が適用されるのは BslLightControlEnumerateDevices コマンド。

オーバートリガー#

カメラがその能力の上限で動作している場合、照明器具のオーバートリガーが発生する可能性があります。オーバートリガーとは、照明器具がまだ照明をオフに切り替えている途中など、準備ができていない間にトリガーを受信することを意味します。これは、トリガーが無視され、次の露光時に照明が点灯しないことを意味します。

この問題をよりよく理解するには、次の例を検討します。

100 fps が可能なカメラは、露光時間を 50 ms に設定して動作しています。よって、カメラは露出間に一時停止せずに、1 秒あたり 20 フレームをすばやく連続して取得します。これは、照明器具のトリガーが 2 つの露光間の両端に正確に実行される必要があることを意味します。

しかし実際には、これはほとんど不可能です。なぜなら、固有のジッターにより、ライトがオフになりそうなときにトリガーが着信することがあり、そのような場合、トリガーは無視され、生成された画像は暗すぎるものとなるからです。

ジッターは不規則なため、これが起きるのを回避する正確な方法はありません。一部の画像が他の画像より暗いことに気付いた場合は、ライトを連続モードで動作させることを検討してください。また、Acquisition Frame Rate 機能を使用してフレームレートを調整することもできます。

オーバートリガーの監視#

On ace 2、boost R、およびdart Mカメラファームウェアで実行されている インターネット接続のない Peripheral Devices Control機能, BslLightControlOvertriggerCount パラメータが利用可能です。接続されているライティングデバイスの少なくとも1つが準備できていない状態で、何回のトリガー信号が送信されたかを監視できます。

例: 4台のライティングデバイスがカメラに接続されていると仮定します。3台のデバイスが準備できていない状態でトリガー信号を送信すると、結果として BslLightControlOvertriggerCount パラメータが1増加します。パラメータは最大値の65 535までカウントアップします。その後、カウントを停止します。オーバーツラッパーカウンタをリセットするには、以下を実行します BslLightControlOvertriggerCountReset コマンド。

エラーのチェックとクリア#

ace 2、boost R、dart Mカメラ#

ファームウェアを実行しているBasler ace 2、boost R、およびdart Mカメラは、Peripheral Devices Control機能が含まれていない場合、接続されたライトデバイスから次のエラーデータを読み取ることができます。

  • エラーステータスは、エラーを自分で修正するのに役立ちます。
  • Error Code により、エラーの種類に関する追加情報を取得できます。またこれは、Basler サポートでの評価にも使用します。

エラーを確認してクリアするには、次の手順に従います。

  1. 複数のデバイスが接続されている場合は、次のようにします。
    1. Check the BslLightControlErrorSummary どのデバイスで問題が発生しているかを調べるためのパラメータ(例: Device2.
    2. パラメーターを BslLightDeviceSelector パラメータを問題が発生しているデバイスに設定します。
  2. 次の値を取得します。 BslLightDeviceErrorStatus パラメータを確認し、以下の表でその意味を エラーステータス 参照してください。
  3. エラーステータスが「ハードウェアエラー」の場合は、次のようにします。
    1. 実行します: BslLightDeviceErrorStatusReadAndClear コマンド。
    2. 次の値を取得します。 BslLightDeviceErrorCode パラメータを確認し、以下の表でその意味を Error Codes 参照してください。
    3. 可能であれば、エラーを修正します。
  4. エラーステータスが「Hardware Error」ではない場合:
    1. 可能であれば、エラーを修正します。
    2. 実行します: BslLightDeviceErrorStatusReadAndClear コマンドを実行してエラーステータスを NoError.
エラーステータス#

イメージ BslLightDeviceErrorStatus パラメータには以下の値を設定できます:

値 意味
Communication Error 照明器具とカメラ間のデータ伝送に障害があると、通信エラーが発生します。これは、使用するケーブルが長すぎる、または回線上のノイズが多すぎるなどの原因で生じる可能性があります。
接続ロスト 以前に接続していた照明器具への接続が失われました。これは、ケーブルが緩んだ場合などに発生する可能性があります。
Hardware Error ライトデバイスで技術的な障害が発生しています。ハードウェアエラーの種類についての詳細は、 BslLightDeviceErrorStatusReadAndClear コマンドを実行して エラーコード.a
照明器具エラー 照明器具に内部エラーが発生しています。a
No Error エラーは検出されませんでした。
未接続 ライトデバイスがカメラに接続されていないか、まだ列挙されていません。デバイスを列挙するには、 BslLightControlEnumerateDevices コマンドを実行してください。
サポートされていない器具のバージョン 照明器具は現在ご利用のカメラと互換性がありません。ファームウェアのアップデートが利用可能かどうかについて、サポートにお問い合わせください。
Error Codes#

イメージ BslLightDeviceErrorCode パラメータには以下の値を設定できます:

値 意味
0x30024 照明コントローラーのライティングコネクターに短絡があります。原因は照明器具の不良の可能性があります。
0x3002A Light Controllerが要求された電流を供給できません。 BslLightDeviceCurrent パラメータ値を指定します。
(その他) この Error Code については、Baslerサポートにお問い合わせください。

ace U/Lカメラ#

Basler ace U/L カメラは、接続された照明器具からエラーのリストを読み取ることができます。

最大25個のエラーを保存できます。26番目のエラーが発生すると、最も古いエラーが上書きされます。以後同様です。

エラーのチェックとクリアは、発生したエラーの数に応じた反復的なプロセスです。

エラーを確認してクリアするには、次の手順に従います。

  1. 複数のデバイスが接続されている場合は、次のようにします。
    1. Check the BslLightControlErrorStatus どのデバイスで問題が発生しているかを調べるためのパラメータ(例: Device2.
    2. パラメーターを BslLightDeviceSelector パラメータを問題が発生しているデバイスに設定します。
  2. 次の値を取得します。 BslLightDeviceLastError パラメータを下げて、以下の表でその意味を確認してみてください。
  3. 対応するエラーを修正します。
  4. エラーリストから最後のエラーを削除するには、 BslLightDeviceClearLastError コマンド。
  5. パラメータに BslLightDeviceLastError が表示されるまで、最後のエラーの取得と削除を繰り返します。 NoError.
値 意味
Communication Error 照明器具とカメラ間のデータ伝送に障害があると、通信エラーが発生します。これは、使用するケーブルが長すぎる、または回線上のノイズが多すぎるなどの原因で生じる可能性があります。
Connection Error 接続エラーは、照明器具とカメラ間の接続が切断されている場合、またはすでに通信エラーが発生している場合に発生します。他の原因としては、接続が緩んでいたり、コントローラーが完全に切断されていたりする可能性があります。
Hardware Error 照明器具に技術的な障害が発生しています。a
電流不足 Light Controllerが要求された電流を供給できません。 LightDeviceMaxCurrent パラメータ値を指定します。
No Error 最後にエラーメモリがクリアされてから、照明器具はエラーを検出していません。
短絡 照明コントローラーのライティングコネクターに短絡があります。原因は照明器具の不良の可能性があります。

  1. 電源を切断して再接続すると問題が解決する場合があります。確実に電源を入れ直すには、コントローラーを 5 分間電源から切断する必要があります。これは正常な動作です。複数のコントローラーを使用している場合は、他のコントローラーで障害が発生していなくても、それらの電源を入れ直す必要があります。

サンプルコード#

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"