コンテンツにスキップ
⚡ リアルタイム高速度カメラ INFINICAM(UC-1.1 / GbE-2)開発者ドキュメント

共通定数・列挙体・型定義

ヘッダーファイル PUCCONST.h で定義されている共通の定数、各種列挙体、および型定義の仕様です。


定数名 値 説明
PUC_MAX_DEVICE 16 接続可能な最大デバイス数
PUC_MAX_LEN 256 最大文字数
PUC_Q_COUNT 64 量子化テーブルの要素数 (8 × 8)
PUC_MIN_RING_BUF_COUNT 4 連続転送時の最小リングバッファ数
PUC_MAX_RING_BUF_COUNT 65535 連続転送時の最大リングバッファ数
PUC_XFER_TIMEOUT_AUTO 0 タイムアウト時間を撮影速度に応じて自動調整
PUC_XFER_TIMEOUT_INFINITE 0xFFFFFFFF タイムアウト時間を無制限に設定
PUC_SYNC_OUT_MAGNIFICATION_0_5 0 同期信号出力倍率 0.5 倍を表す定数
PUC_MAX_DECODE_THREAD_COUNT 32 マルチスレッドデコード時の最大スレッド数
PUC_MAC_ADDRESS_SIZE 6 MACアドレスのバイト数

デバイス検索フラグ (PUC_DetectDevice2 用)

Section titled “デバイス検索フラグ (PUC_DetectDevice2 用)”

PUC_DETECT_FILTER::nDeviceTypeFlags に指定する検索対象フラグです。複数機種を同時に検索する場合はビットOR で組み合わせます。

定数名 値 説明
PUC_DETECT_TARGET_ALL 0x00000000 全機種を検索対象にする
PUC_DETECT_TARGET_UC1 0x00000001 UC-1.1(USBモデル)を検索対象にする
PUC_DETECT_TARGET_GBE2 0x00000002 GbE-2(Ethernetモデル)を検索対象にする

PUC_DETECT_FILTER::nDetectMode に指定する検索方式です(GbE-2専用、UC1では無視されます)。

定数名 値 説明
PUC_DETECT_MODE_DISCOVERY 0x00000000 各アダプタでブロードキャスト探索を行う(既定)。IPアドレスが未知のデバイスも発見可能
PUC_DETECT_MODE_TARGET_IP 0x00000001 nTargetIPAddress で指定したIPアドレスへ直接検索する

#define PUC_CHK_SUCCEEDED(res) (res == PUC_SUCCEEDED) // エラーコードが正常時に真となるマクロ
#define PUC_CHK_FAILED(res) (res != PUC_SUCCEEDED) // エラーコードが正常以外の時に真となるマクロ

typedef void* PUC_HANDLE; // デバイスを表すハンドル
typedef PUC_HANDLE* PPUC_HANDLE; // デバイスハンドルのポインタ

typedef enum {
PUC_OFF = 0, // OFF
PUC_ON = 1 // ON
} PUC_MODE;
typedef enum {
PUC_SIGNAL_POSI = 0, // 正極性
PUC_SIGNAL_NEGA = 1 // 負極性
} PUC_SIGNAL;
typedef enum {
PUC_SYNC_INTERNAL = 0, // 内部動作
PUC_SYNC_EXTERNAL = 1, // 外部信号に同期する
PUC_SYNC_EXTERNAL_PTP = 2 // PTP (Precision Time Protocol) マスタークロックに同期する(GbE-2専用)
} PUC_SYNC_MODE;

PUC_COLOR_TYPE (カラー / モノクロ仕様)

Section titled “PUC_COLOR_TYPE (カラー / モノクロ仕様)”
typedef enum {
PUC_COLOR_MONO = 0, // モノクロ
PUC_COLOR_COLOR = 1 // カラー
} PUC_COLOR_TYPE;

検索系関数(PUC_DetectDevice2 等)が PUC_DETECT_INFO::nDeviceType に格納する値で、PUC_OpenDevice2 で開く対象デバイスの判別にも使用します。

typedef enum {
PUC_DEVICE_UC1 = 0, // INFINICAM UC-1.1(USB接続)
PUC_DEVICE_GBE2 = 1, // INFINICAM GbE-2(Ethernet接続)
PUC_DEVICE_OTHERS = 2 // 上記以外(検索系関数が返すことはなく、アプリ側がファイル等カメラ以外を表すために使用)
} PUC_DEVICE_TYPE;

PUC_SYNC_OUT_TIMES (同期信号出力回数倍率)

Section titled “PUC_SYNC_OUT_TIMES (同期信号出力回数倍率)”

撮影速度に対する倍率で、1フレームあたり何回同期信号を出力するかを指定します(例:X2 は1フレームあたり2回出力)。

typedef enum {
X0_5 = 0x0101, // x0.5倍(2フレームに1回)
X1 = 1, // x1倍
X2 = 2, // x2倍
X4 = 4, // x4倍
X6 = 6, // x6倍
X8 = 8, // x8倍
X10 = 10, // x10倍
X20 = 20, // x20倍
X30 = 30, // x30倍
} PUC_SYNC_OUT_TIMES;

PUC_NETWORK_INFO_TYPE (PUC_SetNetworkInfo 用)

Section titled “PUC_NETWORK_INFO_TYPE (PUC_SetNetworkInfo 用)”
typedef enum {
IPADDRESS = 0, // IPアドレス(32bit値で指定)
NETMASK = 1, // サブネットマスク(32bit値で指定)
GATEWAY = 2, // デフォルトゲートウェイ(32bit値で指定)
DHCP_ON = 3, // DHCPを有効にする(値は未使用)
DHCP_OFF = 4, // DHCPを無効にする(値は未使用)
} PUC_NETWORK_INFO_TYPE;

PUC_CAPABILITY (PUC_IsSupported 用の機能種別)

Section titled “PUC_CAPABILITY (PUC_IsSupported 用の機能種別)”

接続中のカメラが対応している機能かどうかを、機種名で分岐する代わりに PUC_IsSupported で確認するための列挙体です。

定数名 対応するAPI
PUC_CAP_RESET_DEVICE PUC_ResetDevice
PUC_CAP_COMMAND_PASSTHROUGH コマンド直接送受信
PUC_CAP_SYNC_OUT_SIGNAL PUC_Get/SetSyncOutSignal
PUC_CAP_SYNC_OUT_MAGNIFICATION PUC_Get/SetSyncOutMagnification
PUC_CAP_SYNC_OUT_TIMES PUC_Get/SetSyncOutTimes
PUC_CAP_SYNC_IN_DELAY PUC_Get/SetSyncInDelay
PUC_CAP_TRIG_IN_DELAY PUC_Get/SetTrigInDelay
PUC_CAP_TRIG_OUT_WIDTH PUC_Get/SetTrigOutWidth
PUC_CAP_EXPOSE_DELAY PUC_Get/SetExposeDelay
PUC_CAP_PP_OUT PUC_Get/SetPPOutWidth / PUC_Get/SetPPOutDelay
PUC_CAP_EXTERNAL_SYNC_STATUS PUC_GetExternalSyncStatus
PUC_CAP_EPOC_TIME PUC_SetEPOCTime / PUC_SetTimeOfDay
PUC_CAP_MAC_ADDRESS PUC_GetMacAddress
PUC_CAP_NETWORK_INFO PUC_SetNetworkInfo / PUC_GetIPAddress
PUC_CAP_GENERAL_IO PUC_Get/SetGeneralIn/OutSignal
PUC_CAP_XFER_TIMEOUT PUC_SetXferTimeOut の設定が反映されるか
PUC_CAP_GPU_DECODE PUC_DecodeGPU(当該カメラのデータ形式に対応しているか)
PUC_CAP_FAN PUC_Get/SetFanState

PUC_GENERAL_OUT_SIGNAL_TYPE / PUC_GENERAL_IN_SIGNAL_TYPE (汎用入出力の信号種別)

Section titled “PUC_GENERAL_OUT_SIGNAL_TYPE / PUC_GENERAL_IN_SIGNAL_TYPE (汎用入出力の信号種別)”

GPIOの汎用入出力ポートへ割り当てる信号種別です。名称末尾(または含まれる)の POS/NEG はそれぞれ正極性・負極性を表します。使用可能な種別は機種によって異なるため、PUC_GetSupportedGeneralOutSignal / PUC_GetSupportedGeneralInSignal で事前に確認してください。

// 汎用出力ポート
typedef enum {
VSYNC_POS = 0x0000, VSYNC_NEG = 0x0001, // 垂直同期信号
EXPOSE_POS = 0x0002, EXPOSE_NEG = 0x0003, // 露光期間
REC_POS = 0x0004, REC_NEG = 0x0005, // 記録中
TRIGGER_POS = 0x0006, TRIGGER_NEG = 0x0007, // トリガ入力の検出
READY_POS = 0x0008, READY_NEG = 0x0009, // 記録準備完了
IRIG_RESET_POS = 0x000A, IRIG_RESET_NEG = 0x000B, // IRIGタイムコードのリセット
STRADDLING_POS = 0x000C, STRADDLING_NEG = 0x000D, // ストラドリング(2枚撮り)露光
PTP_PP_POS = 0x000E, PTP_PP_NEG = 0x000F, // PTPの毎秒パルス
} PUC_GENERAL_OUT_SIGNAL_TYPE;
// 汎用入力ポート
typedef enum {
EVENT_POS_IN = 0x0000, EVENT_NEG_IN = 0x0001, // イベント入力
TRIG_POS_IN = 0x0002, TRIG_NEG_IN = 0x0003, // トリガ入力
READY_POS_IN = 0x0004, READY_NEG_IN = 0x0005, // 記録準備完了の入力
SYNC_POS_IN = 0x0006, SYNC_NEG_IN = 0x0007, // 外部同期入力
POWER_OFF_POS_IN = 0x0008, POWER_OFF_NEG_IN = 0x0009, // 電源オフ入力
EXPOSE_POS_IN = 0x000A, EXPOSE_NEG_IN = 0x000B, // 露光制御入力
} PUC_GENERAL_IN_SIGNAL_TYPE;