メインコンテンツまでスキップ
バージョン: v24.05

デバイス情報へのアクセスと表示

このチュートリアルでは、Aravis APIを使用してデバイス情報を取得する方法について学びます。

前提条件

  • Aravis(SDKパッケージに含まれています)
  • GObject (SDKパッケージに含まれています)

チュートリアル

必要なモジュールをロード

Aravisモジュールを使用するためには、 arv.h(インストールしたSDKに含まれています)というヘッダーファイルを含める必要があります。

#include <exception>
#include <iostream>
#include "arv.h"

エラーメッセージをキャッチするために例外とiostreamヘッダーを含めるのも良いアイデアです。

デバイスへのアクセス

これでAravis APIを使用する準備が整いました。まず、ホストマシンに接続されているU3Vデバイスのリストを更新します。

arv_update_device_list ();

リストを更新することで、以下のAPIがデバイスの数を返すはずです。

unsigned int n_devices = arv_get_n_devices ();
注意

n_devices0 の場合、デバイスには以下の問題がある可能性があります。

デバイス情報へのアクセスと表示

n_devices のデバイスのうち、 i 番目のデバイスにアクセスしてカメラオブジェクトを作成します。

arv_device_get_*_feature_value のAPIを使用してデバイス情報の文字列/整数/浮動小数点数の値を取得できます。

for (unsigned int i = 0; i < n_devices; ++i){
const char* dev_id = arv_get_device_id (i);
ArvDevice* device = arv_open_device(dev_id, nullptr);

printf("%20s : %s\n",
"Device Model Name",
arv_device_get_string_feature_value(device, "DeviceModelName", &error));
if (error){
throw std::runtime_error(error->message);
}
printf("%20s : %li\n",
"Width",
arv_device_get_integer_feature_value(device, "Width", &error));
if (error){
throw std::runtime_error(error->message);
}
...
g_object_unref (device);
}

一般的なU3Vデバイスで定義された一部のキーの例は、以下の表にリストされています。

フィーチャ名説明タイプ
DeviceModelNameデバイスの名前文字列
Widthセンサイメージの幅整数
Heightセンサイメージの高さ整数
PayloadSizeセンサから転送されるデータのサイズ整数
PixelFormatセンサイメージデータのピクセルフォーマット文字列
ヒント

これらのフィーチャキーとタイプはemvaによるSFNC(Standard Features Naming Convention)で定義されていますが、一部のデバイスは独自のフィーチャやキーを持っている場合があります。すべてのアクセス可能なフィーチャを知るには、arv-tool-0.8を使用します。詳細は利用可能なGenICam機能の一覧表示を参照してください。

注意

arv-device-error-quark がエラーを返す場合:

クローズ

Aravisの以下の関数を使用すると、メモリリークを防ぐためにリソースが解放されます。

g_object_unref (device);
ヒント

Aravis APIの代わりに、arv-toolを使用することもできます。詳細はAravisのツールを参照してください。

完全なコード

このチュートリアルで使用される完全なコードはこちらです。