设置Kinect的ElevationAngle随机抛出基于COM的InvalidOperationException

时间:2014-05-12 07:34:30

标签: kinect kinect-sdk kinect-interaction

我正在研究Kinect倾斜控制(类似于Kinect Explorer工具包示例中的那些,但仅由Scrollbar组成)。这很有效但设置了倾斜角度:

CurrentKinectSensor.ElevationAngle = value;

导致基础COM引起的 System.InvalidOperationException

This API has returned an exception from an HRESULT: 0x800704D5

System.InvalidOperationException was unhandled
HResult=-2146233079
Message=This API has returned an exception from an HRESULT: 0x800704D5
Source=Microsoft.Kinect
InnerException: System.Runtime.InteropServices.COMException
HResult=-2147023659
Message=The operation could not be completed. A retry should be performed. (Exception 
from HRESULT: 0x800704D5)
ErrorCode=-2147023659
InnerException: 

我只能通过处理异常处理它,但我不完全明白是什么原因。

到目前为止,我发现它在某种程度上与在Kinect完成Kinect控制器的上一次更改的物理倾斜之前设置 ElevationAngle 属性的新值这一事实有关。

它增加了引发异常的可能性 - 换句话说,如果过于频繁地设置 ElevationAngle 属性,则会发生异常。

设置 ElevationAngle 之间的最小可接受延迟测试为 750ms ,但我想这取决于要更改的角度,因为它可能会持续更长时间。

我如何知道Kinect传感器已完成物理倾斜操作并准备好进行下一次?

1 个答案:

答案 0 :(得分:2)

你无法判断Kinect何时完成倾斜但是你正在监督一次。 MSDN说以下

  

为了减少磨损,您的应用应该改变仰角   每秒不止一次。此外,您必须至少允许20   连续15次更改后休息几秒钟。

因此,错误可以在两种情况下抛出,或者通过将值更改为快速相继或者不让相机在15种方式后休息。

总是在Kinect Angle的吸气剂/设定器附近试一试。

相关问题