我正在使用Kinect SDK版本1.6构建一个Kinect应用程序。我想用Kinect Studio录制一个.xed文件,然后使用这个.xed文件来测试我的应用程序,而不必每次都连接Kinect传感器。
我已经成功地录制了.xed文件,现在我正在尝试使用.xed文件作为输入而不是传感器来运行我的应用程序。问题是,当我的应用程序第一次加载时,它会检查连接的传感器,并连接到一个存在的传感器-如果一个不存在,它就无法连接,必须退出。但是,我的应用程序必须在Kinect Studio加载时运行,Studio才能连接到正在运行的Kinect应用程序。所以我的问题是--什么是设计模式?
应用程序是否应该开始运行并等待激活的传感器,然后再连接?或者Studio应该运行并等待Kinect应用程序启动,然后将自己连接到该应用程序?微软给出的所有示例只检查一次连接的设备,如果不存在就退出。
发布于 2012-12-28 21:57:05
您可以在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;
}
}所以总而言之,我在启动时使用的模式是:
然后,当Kinect传感器的状态改变时,我的应用程序可以做出适当的反应。
注意,这种类型的模式应该适用于所有应用程序,而不仅仅是这个特定的用例。如果Kinect传感器断开连接,所有启用了Kinect的应用程序应该会做出相应的反应。
https://stackoverflow.com/questions/14055816
复制相似问题