2

Kinect SDK バージョン 1.6 を使用して Kinect アプリを作成しています。Kinect Studio で .xed ファイルを記録し、その .xed ファイルを使用して、Kinect センサーを毎回接続することなくアプリをテストしたいと考えています。

.xed ファイルを正常に記録しました。現在、センサーの代わりに .xed ファイルを入力として使用してアプリを実行しようとしています。問題は、アプリが最初に読み込まれるときに、接続されているセンサーをチェックし、存在する場合は接続することです。存在しない場合は接続できず、終了する必要があります。ただし、Kinect Studio が実行中の Kinect アプリに接続するには、Kinect Studio の読み込み時にアプリが実行されている必要があります。だから私の質問は - デザインパターンは何ですか?

アプリの実行を開始し、アクティブなセンサーを待ってから接続する必要がありますか? それとも、Studio を実行して Kinect アプリが開始するのを待ってから、アプリに接続する必要がありますか? Microsoft が提供するすべての例は、接続されたデバイスを 1 回チェックし、デバイスが存在しない場合は終了します。

4

1 に答える 1

1

Kinect センサーの状態が変化したときのイベント ハンドラーを追加できます。

KinectSensor.KinectSensors.StatusChanged += Kinect_StatusChanged;

次に、ステータスが変化し、センサーが接続されたら、起動時に通常行っていたようにセンサーを初期化できます。

void Kinect_StatusChanged(object sender, StatusChangedEventArgs e)
{
    switch (e.Status)
    {
        case KinectStatus.Connected:
            if (kinectSensor == null)
            {
                kinectSensor = e.Sensor;
                Initialize();
            }
            break;
        case KinectStatus.Disconnected:
            if (kinectSensor == e.Sensor)
            {
                Clean();
                // Notify user, change state of APP appropriately
            }
            break;
        case KinectStatus.NotReady:
            break;
        case KinectStatus.NotPowered:
            if (kinectSensor == e.Sensor)
            {
                Clean();
                // Notify user, change state of APP appropriately
            }
            break;
        default:
            // Throw exception, notify user or ignore depending on use case
            break;
    }
}

要約すると、起動時に使用するパターンは次のとおりです。

  1. StatusChanged イベントを購読する
  2. Kinect センサーの初期化を試みる

その後、Kinect センサーの状態が変化すると、アプリは適切に反応できます。

このタイプのパターンは、この特定のユース ケースだけでなく、すべてのアプリケーションに適用する必要があることに注意してください。すべての Kinect 対応アプリは、Kinect センサーが切断された場合に適切に反応する必要があります。

于 2012-12-28T13:57:04.533 に答える