2

我正在使用 Kinect SDK 1.6 版构建 Kinect 应用程序。我想用 Kinect Studio 录制一个 .xed 文件,然后使用该 .xed 文件来测试我的应用程序,而不必每次都连接 Kinect 传感器。

我已经成功记录了 .xed 文件,现在我正在尝试使用 .xed 文件作为输入而不是传感器来运行我的应用程序。问题是,当我的应用程序第一次加载时,它会检查连接的传感器并连接到一个(如果存在)——如果一个不存在,它就无法连接并且必须退出。但是,我的应用程序必须在 Kinect Studio 加载时运行,以便 Studio 连接到正在运行的 Kinect 应用程序。所以我的问题是——设计模式是什么?

应用程序是否应该开始运行并等待激活的传感器,然后连接?或者 Studio 是否应该正在运行并等待 Kinect 应用程序启动,然后将自身连接到该应用程序?微软给出的所有示例都只检查一次连接的设备,如果不存在则退出。

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 回答