新規バッファコールバック
このプログラムは、 新規バッファ イベントに関連する情報にアクセスする方法を示します。 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
Euresysのドキュメントについて
このドキュメントは、バージョン44のGoogle Chrome、バージョン20のMicrosoft Edge向けに最適化されています。
適切に表示するにはJavascriptが必要です。 ブラウザでアクティブなスクリプトを有効にする必要があります。
推奨される画面解像度は、少なくとも1280 x 1024です。
本書はCoaxlink 11.0 (doc build ) とともに提供されます。2077
利用規約
EURESYS s.a. は、ハードウェアおよびソフトウェアのドキュメントおよび EURESYS s.a. の商標のあらゆる所有権、権原および権益を留保します。
本書に記載されているすべての会社名および製品名は、各所有者の商標である可能性があります。
EURESYS s.a. のハードウェアまたはソフトウェア、ブランドまたは本書に含まれるドキュメントのライセンス供与、使用、リース、貸し出し、翻訳、複製、複写または変更は、 事前の通知なく許可されていません。
EURESYS s.a. は、随時、自由裁量で、事前の通知なく製品の仕様を変更したり、本書に記載されている情報を変更することができます。
EURESYS s.a. は、EURESYS s.a. のハードウェアまたはソフトウェアの使用に関連して発生した、または本書での欠落または誤りの結果生じた、収入、利益、営業権、データ、情報システムのいかなる損失または損害、またはその他のあらゆる種類の特別な、偶発的な、間接的な、派生的な、または懲罰的な損害に対し 一切の責任を負いません。