我正在研究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传感器已完成物理倾斜操作并准备好进行下一次?
答案 0 :(得分:2)
你无法判断Kinect何时完成倾斜但是你正在监督一次。 MSDN说以下
为了减少磨损,您的应用应该改变仰角 每秒不止一次。此外,您必须至少允许20 连续15次更改后休息几秒钟。
因此,错误可以在两种情况下抛出,或者通过将值更改为快速相继或者不让相机在15种方式后休息。
总是在Kinect Angle的吸气剂/设定器附近试一试。