Documentation Portal      

何をお探しですか?

.NET アセンブリ

EGrabber can be used in .NET languages (C#, VB.NET, etc.) via a .NET assembly named Coaxlink_NetApi.dll.

最初の例

この例では、グラバーを作成し、それに含まれるインターフェイス、デバイス、およびリモートデバイスモジュールに関する基本情報を表示します。これは the first C++ EGrabber exampleバージョンです:

using System;

namespace FirstExample {
    class ShowInfo {
        const  int CARD_IX = 0;
        const  int DEVICE_IX = 0;

        static  void  showInfo() {
            using (Euresys.EGenTL gentl = new Euresys.EGenTL()) {                             // 1  
                using (Euresys.EGrabberCallbackOnDemand grabber =
                       new Euresys.EGrabberCallbackOnDemand(gentl, CARD_IX, DEVICE_IX)) {   // 2
                    String card = grabber.getStringInterfaceModule("InterfaceID");          // 3
                    String dev = grabber.getStringDeviceModule("DeviceID");                 // 4  
                    long width = grabber.getIntegerRemoteModule("Width");                   // 5  
                    long height = grabber.getIntegerRemoteModule("Height");                 // 5

                    System.Console.WriteLine("Interface:    {0}", card);
                    System.Console.WriteLine("Device:       {0}", dev);
                    System.Console.WriteLine("Resolution:   {0}x{1}", width, height);
                }
            }
        }

        static  void  Main() {
            try {                                                                           // 6  
                showInfo();
            } catch (System.Exception e) {                                                  // 6
                System.Console.WriteLine("error: {0}", e.Message);
            }
        }
    }
}
  1. キャリブレータ Euresys.EGenTL オブジェクトを作成。これには以下の操作が含まれます:

    • Coaxlink GenTLプロデューサーを見つけて動的にロードする (coaxlink.cti);
    • coaxlink.ctiによってエクスポートされた関数へのポインタを取得します。
    • coaxlink.ctiを開始。
  2. Euresys.EGrabberCallbackOnDemand object. The constructor needs the gentlオブジェクトを作成します。また、オプションの引数として、使用するインタフェースとデバイスのインデックスも取ります。

  3. GenApiを使用し、CoaxlinkカードのIDを調べます。InterfaceModule suffix in getStringInterfaceModuleに気付きます。interface moduleからの回答が必要であることを示しています。

  4. 同様に、デバイスのIDを調べます。今回は、 getStringDeviceModule を使用し device moduleをターゲットにします。

  5. 最後に、カメラの解像度を読みます。今回は、値をカメラから読み取る必要があるため getIntegerRemoteModule を使用します。

  6. EGrabber uses exceptions to report errors, so we wrap our code inside a try ... catchブロック。

プログラム出力例

Interface:    PC1633 - Coaxlink Quad G3 (2-camera) - KQG00014
Device:       Device0
Resolution:   4096x4096

C ++と.NETの違いEGrabber

ITALIC の用語はプレースホルダーです:

  • MODULE can be replaced by InterfaceModule, DeviceModule...
  • EVENT_DATA can be replaced by NewBufferData, CicData...
EGrabber クラス
C++ .NET
EGrabber<> -
EGrabber<CallbackOnDemand> EGrabberCallbackOnDemand
EGrabber<CallbackSingleThread> EGrabberCallbackSingleThread
EGrabber<CallbackMultiThread> EGrabberCallbackMultiThread
EGrabber 方法
C++ .NET
getInfo<MODULE,TYPE>(cmd) getInfoMODULE(cmd, out ...)
getInteger<MODULE>(f) getIntegerMODULE(f)
getFloat<MODULE>(f) getFloatMODULE(f)
getString<MODULE>(f) getStringMODULE(f)
getStringList<MODULE>(f) getStringListMODULE(f)
setInteger<MODULE>(f, v) setIntegerMODULE(f, v)
setFloat<MODULE>(f, v) setFloatMODULE(f, v)
setString<MODULE>(f, v) setStringMODULE(f, v)
execute<MODULE>(f) executeMODULE(f)
enableEvent<EVENT_DATA>() enableEVENT_DATAEvent(f)
disableEvent<EVENT_DATA>() disableEVENT_DATAEvent(f)
コールバック

.NETでは、コールバックは代理として定義されています:

grabber.onNewBufferEvent = delegate ...
grabber.onDataStreamEvent = delegate ...
grabber.onCicEvent = delegate ...
grabber.onIoToolboxEvent = delegate ...
grabber.onCxpInterfaceEvent = delegate ...

次のセクションで例を確認ください。

シングルスレッドコールバック

このプログラムは、CallbackSingleThread model. This is the C# version of the C++ CallbackSingleThreadの例を使用して、グラバーによって生成されたCICイベントに関する基本情報を表示します

using System;

namespace Callbacks {
    class CallbackExample {
        static  void  showEvents(Euresys.EGrabberCallbackSingleThread grabber) {
            grabber.runScript("config.js");                                             // 1

            grabber.onCicEvent = delegate(Euresys.EGrabberCallbackSingleThread g,       // 2
                                          Euresys.CicData data) {
                System.Console.WriteLine("timestamp: {0} us, {1}",                      // 3
                                         data.timestamp, data.numid);
            };                                                                          // 4

            grabber.enableCicDataEvent();                                               // 5

            grabber.reallocBuffers(3);                                                  // 6
            grabber.start();                                                            // 6  
            while (true) {                                                              // 6
            }
        }

        static  void  Main() {
            try {
                using (Euresys.EGenTL gentl = new Euresys.EGenTL()) {
                    using (Euresys.EGrabberCallbackSingleThread grabber =
                           new Euresys.EGrabberCallbackSingleThread(gentl)) {
                        showEvents(grabber);
                    }
                }
            } catch (System.Exception e) {
                System.Console.WriteLine("error: {0}", e.Message);
            }
        }
    }
}
  1. config.js スクリプトを実行してください:

    • カメラとフレームグラバーを正しく設定してください;
    • CICイベントの 通知 を有効にします。
  2. CIC イベント用のコールバック関数を登録します:

    • イベントに関する情報を含むdelegate that will be called by EGrabber when a CIC event occurs; this delegate will be called with two arguments: the grabber and the CicDataを作成します。
    • グラバーのonDataStreamEvent to this delegate 機能に設定します。
  3. コールバック関数の本体では、単にイベントに関する基本情報を表示します。

  4. これで onCicEvent コールバック関数の定義は終了です。

  5. onCicEvent コールバックを有効にしてください。

  6. グラバーを起動して無限ループに入ります。CIC イベントは専用スレッドで通知されます。

プログラム出力例

timestamp: 2790824897 us, EVENT_DATA_NUMID_CIC_CAMERA_TRIGGER_RISING_EDGE
timestamp: 2790824897 us, EVENT_DATA_NUMID_CIC_STROBE_RISING_EDGE
timestamp: 2790824902 us, EVENT_DATA_NUMID_CIC_CXP_TRIGGER_ACK
timestamp: 2790825897 us, EVENT_DATA_NUMID_CIC_STROBE_FALLING_EDGE
timestamp: 2790830397 us, EVENT_DATA_NUMID_CIC_CAMERA_TRIGGER_FALLING_EDGE
timestamp: 2790830401 us, EVENT_DATA_NUMID_CIC_CXP_TRIGGER_ACK
timestamp: 2790842190 us, EVENT_DATA_NUMID_CIC_ALLOW_NEXT_CYCLE
timestamp: 2790842190 us, EVENT_DATA_NUMID_CIC_CAMERA_TRIGGER_RISING_EDGE
timestamp: 2790842191 us, EVENT_DATA_NUMID_CIC_STROBE_RISING_EDGE
timestamp: 2790842195 us, EVENT_DATA_NUMID_CIC_CXP_TRIGGER_ACK

© 西暦 EURESYS s.a.  -  このドキュメントについて  -  Coaxlink 12.0.0。2091