Grabberの状態
Grabber オブジェクトは、そのライフサイクルの中で複数の状態を遷移します。
現在の Grabber の状態は、以下の状態プロパティによって確認できます。
初期状態
初期状態では、Grabber はまだビデオキャプチャデバイスを開いていません。
| Property | Value |
|---|---|
| is_device_open | False |
| is_device_valid | False |
| is_streaming | False |
| is_acquisition_active | False |
Grabber.device_close() を呼び出すと、グラバーは常に Initial(初期)状態に戻ります。
Grabber.device_open() または関連する関数でデバイスを開くと、グラバーは Device Opened(デバイスオープン)状態になります。
Device Opened(デバイスオープン)
この状態は、デバイスが開かれているものの、まだストリーミングが開始されていない状態です。デバイスを開いた後は、ストリーミングを行うために必要な設定を行う必要があります。
| Property | Value |
|---|---|
| is_device_open | True |
| is_device_valid | True |
| is_streaming | False |
| is_acquisition_active | False |
Grabber.device_close() を呼び出すと、グラバーは Initial(初期)状態に戻ります。
Grabber.stream_setup() を呼び出すと、グラバーの状態は Streaming(ストリーミング)に移行します。 もし呼び出し時の setup_option パラメータが StreamSetupOption.ACQUISITION_START に設定されている場合、取得(Acquisition)が即時に開始され、グラバーの状態は Acquisition Active(取得アクティブ)に移ります。
デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。さらに、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。
Streaming(ストリーミング)
この状態では、デバイスとホストの間にストリーミング接続が確立されています。デバイスが画像データを送信し、ホストが受信できる準備がすべて完了しています。
| Property | Value |
|---|---|
| is_device_open | True |
| is_device_valid | True |
| is_streaming | True |
| is_acquisition_active | False |
取得(Acquisition)を開始するには、Grabber.acquisition_start() を呼び出すか、デバイスのプロパティマップで AcquisitionStart コマンドを実行します。 その後、グラバーは Acquisition Active(取得アクティブ)状態になります。
Grabber.stream_stop() を呼び出すとデータストリームが停止し、グラバーは Device Opened(デバイスオープン)状態に戻ります。
Grabber.device_close() を呼び出すとデータストリームが停止し、デバイスが閉じられ、グラバーは Initial(初期)状態に戻ります。
デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。 さらに、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。
Acquisition Active(取得アクティブ)
この状態では、デバイスがホストに画像データを送信しています。
| Property | Value |
|---|---|
| is_device_open | True |
| is_device_valid | True |
| is_streaming | True |
| is_acquisition_active | True |
なお、特定のデバイス設定(例:PropId.TRIGGER_MODE)によっては、デバイスが画像送信を一時停止する場合があります。
取得(Acquisition)を停止するには、Grabber.acquisition_stop() を呼び出すか、デバイスのプロパティマップで AcquisitionStop コマンドを実行します。 その後、グラバーは Streaming(ストリーミング)状態になります。
Grabber.stream_stop() を呼び出すと、デバイス側の取得処理が停止し、データストリームも停止し、グラバーは Device Opened(デバイスオープン)状態に戻ります。
Grabber.device_close() を呼び出すと、取得が停止され、データストリームも停止し、デバイスが閉じられ、グラバーは Initial(初期)状態に戻ります。
デバイスとの接続が失われた場合(例:ケーブルが抜かれたなど)、グラバーは Device Invalid(デバイス無効)状態に移行します。 また、デバイスロストイベントが発生します(Grabber.event_add_device_lost() を参照)。
Device Invalid(デバイス無効)
この状態では、デバイスとの接続が失われています。
| Property | Value |
|---|---|
| is_device_open | True |
| is_device_valid | False |
Grabber.device_close() を呼び出すと、グラバーは Initial(初期)状態に戻ります。


