0

我正在研究 Kinect 倾斜控件(类似于 Kinect Explorer 工具包示例中的控件,但仅由滚动条组成)。这很好,但设置倾斜角度:

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之间的最小可接受延迟约为750 毫秒,但我想这取决于要更改的角度,因为它可能会持续更长时间。

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

4

1 回答 1

2

您无法判断 Kinect 何时完成倾斜,但您正在监督一次。MSDN 说如下

为减少磨损,您的应用程序每秒更改仰角的次数不应超过一次。此外,您必须在连续 15 次更换后至少休息 20 秒。

因此,错误可以在两种情况下引发,一种是依次将值更改为快速,另一种是在 15 次后不让相机休息。

总是在 Kinect Angle 的 getter/setter 周围放置一个 try-catch。

于 2014-05-12T13:15:52.150 回答