确定表面拨盘旋转何时结束

时间:2018-12-08 22:49:08

标签: c# wpf

我需要一些非常准确的方法来确定表面拨盘旋转何时结束:

private void OnRotationChanged(RadialController sender, RadialControllerRotationChangedEventArgs args)
{
    double angle = args.RotationDeltaInDegrees;
}

我真的迷住了旋转结束时如何以超精确的方式确定。

这是我的第一次尝试,但是工作起来很不稳定。

bool start = true;
private void OnRotationChanged(RadialController sender, RadialControllerRotationChangedEventArgs args)
{
    if (start == true)
    {
    start = false;
   //send mouse left down event relative to mouse position
    VirtualMouse.LeftDown(0, 0);
    }

    if (timer != null)
    {
        timer.Tick -= timer_Tick;
    }
    timer = new DispatcherTimer { Interval = TimeSpan.FromMillisecond(10) };
    timer.Tick += new EventHandler(timer_Tick);
    timer.Start();


   if (args.RotationDeltaInDegrees > 0)
   {
//move mouse 1 pixel + Y relative to mouse postion
    VirtualMouse.Move(0, 1);
   }

   else
   {
 //move mouse 1 pixel  - Y relative to mouse postion
    VirtualMouse.LeftDown(0, -1);
   }


}


void timer_Tick(object sender, EventArgs e)
{
start = true;
//release the left mouse down relative to mouse position
VirtualMouse.LeftUp(0, 0);
}

当我说准确时,我指的是在任何情况下都可以进行检测的方法。 例如,如果您缓慢旋转且计时器约为1ms,则拨号中的每个新事件(缓慢旋转)都不会及时到达摘机时间。如果我增加计时器,则整个检测结果将导致不准确的过程,从而增加不必要的等待时间。 我知道这不是测试的方法,只是测试,而不是在慢速或快速旋转转盘以获取旋转或正在旋转的转盘停止指示的真实指示器的情况下如何实现正确的检测。

确定何时开始旋转是蛋糕,但是旋转结束?

表面拨盘可提供0.1度的精度,是真正精确的光学设备。因此,一个完整的旋转可以提供3600个事件/角度报告。

......不知道,不思索。

0 个答案:

没有答案