首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Kinect应用程序连接到Kinect Studio

将Kinect应用程序连接到Kinect Studio
EN

Stack Overflow用户
提问于 2012-12-27 21:55:39
回答 1查看 2.8K关注 0票数 2

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 21:57:05

您可以在Kinect传感器状态更改时添加事件处理程序:

代码语言:javascript
复制
KinectSensor.KinectSensors.StatusChanged += Kinect_StatusChanged;

然后,当状态改变且传感器已连接时,您可以像启动时一样初始化传感器:

代码语言:javascript
复制
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 event
  2. 尝试初始化Kinect传感器

然后,当Kinect传感器的状态改变时,我的应用程序可以做出适当的反应。

注意,这种类型的模式应该适用于所有应用程序,而不仅仅是这个特定的用例。如果Kinect传感器断开连接,所有启用了Kinect的应用程序应该会做出相应的反应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14055816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档