Documentation Portal      

何をお探しですか?

新規バッファコールバック

このプログラムは、 新規バッファ イベントに関連する情報にアクセスする方法を示します。 CallbackMultiThreadを使用しますが、他のコールバックメソッドを使うこともできます。

#include <iostream>
#include <EGrabber.h>

using namespace Euresys;

class MyGrabber : public EGrabber<CallbackMultiThread> {
    public:
        MyGrabber(EGenTL &gentl) : EGrabber<CallbackMultiThread>(gentl) {
            runScript("config.js");
            enableEvent<NewBufferData>();
            reallocBuffers(3);
            start();
        }

    private:
        virtual void onNewBufferEvent(const NewBufferData &data) {
            ScopedBuffer buf(*this, data);                                      // 1
            uint64_t ts = buf.getInfo<uint64_t>(GenTL::BUFFER_INFO_TIMESTAMP);  // 2
            std::cout << "event timestamp: " << data.timestamp << " us, "       // 3
                      << "buffer timestamp: " << ts << " us" << std::endl;
        }                                                                       // 4
};

int main() {
    try {
        EGenTL gentl;
        MyGrabber grabber(gentl);
        while (true) {
        }
    } catch (const std::exception &e) {
        std::cout << "error: " << e.what() << std::endl;
    }
}
1. onNewBufferEventで、一時的な ScopedBuffer オブジェクト bufを作成します。 ScopedBuffer コンストラクターは2つの引数を取ります:
バッファを所有しているグラバー: EGrabberから派生したクラスに属しているので、単純に *this
を渡します。バッファに関する情報:これは data
で提供されています。
2. カメラがフレームグラバーへのデータ送信を開始した時刻として定義されているバッファのタイムスタンプを取得します。
3. イベント識別に関するセクションで説明したように、 新規バッファ イベントは他の種類のイベントとはわずかに異なります:それらは標準であり(GenTLによると)、関連する numidはありません。
結果として、 onNewBufferEvent を通った NewBufferData 構造は numid フィールドを持ちません。 ただし、 バッファへのデータ転送が完了したことがドライバに通知された時刻を示す timestamp フィールドがあります。 この イベントタイムスタンプ は、手順2で取得した バッファタイムスタンプ よりも必然的に長くなります。
4. ローカル変数 buf が作成されたブロックの終わりに到達します。 範囲外になり、破棄されます: ScopedBuffer デストラクタが呼び出されます。 これにより、 buf に含まれているGenTLバッファーがグラバーのデータストリームに再度キューイングされます(戻されます)。

プログラム出力例

event timestamp: 77185931621 us, buffer timestamp: 77185919807 us
event timestamp: 77185951618 us, buffer timestamp: 77185939809 us
event timestamp: 77185971625 us, buffer timestamp: 77185959810 us
event timestamp: 77185991611 us, buffer timestamp: 77185979812 us
event timestamp: 77186011605 us, buffer timestamp: 77185999808 us
event timestamp: 77186031622 us, buffer timestamp: 77186019809 us
event timestamp: 77186051614 us, buffer timestamp: 77186039810 us
event timestamp: 77186071611 us, buffer timestamp: 77186059811 us
event timestamp: 77186091602 us, buffer timestamp: 77186079812 us
event timestamp: 77186111607 us, buffer timestamp: 77186099814 us

© 2019 EURESYS s.a.  -  このドキュメントについて  -  Coaxlink 11.0.3。2077