2016-08-18 6 views
0

Пока я записываю позицию курсора с помощью C#, я перемещаю курсор по круговой траектории на моем мониторе. Вот код, который я использую для записи курсора, а также истекшее время:Шум в скорости курсора, который записан на C#

Stopwatch swTime = new Stopwatch(); 
    private StreamWriter swRecorder; 

    private void start_Click(object sender, EventArgs e) 
    { 
     swRecorder = new StreamWriter("cursor.txt"); 
     swTime.Start(); 
     timer1.Enabled = true; 
    } 

    private void stop_Click(object sender, EventArgs e) 
    { 

     timer1.Enabled = false; 
     swTime.Stop(); 
     swRecorder.Close(); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     string strNewLine = swTime.Elapsed.TotalMilliseconds.ToString(); 
     strNewLine = strNewLine + "," + Cursor.Position.X.ToString(); 
     swRecorder.WriteLine(strNewLine); 
    } 

Если я сюжет положения самописца (X компонент) курсора в зависимости от времени, я получаю следующий сюжет:

enter image description here

Затем я измеряю скорость (DeltaX/DeltaT) и снова рисую ее в зависимости от времени. Тогда я получаю следующий сюжет:

enter image description here

Теперь мой вопрос: почему скорость шумная/неровную?

+1

Потому что вы не двигаете курсором с постоянной скоростью? – PaulF

+0

Может ли это быть связано с длиной галочки самого таймера? edit: см. @dlxeon очень точный ответ ниже. –

+0

@RyanPeters Графики рисуются относительно времени записи. Таким образом, длина галса не может быть проблемой! – NESHOM

ответ

1

Я думаю, что основной причиной является то, что вы не делаете точные круги с постоянной скоростью. В дополнении к этому я думаю, возможно следующее: таймер не гарантируется называться точно каждую ой миллисекундой

  • Windows Forms. Таким образом, вы получите новые измерения в несколько разных периодах времени.
  • Точность датчика мыши (DPI) может привести к тому, что координаты будут немного отличаться от реального положения мыши.
  • Стандартная неиграющая USB-мышь обычно имеет частоту обновления 125 Гц (получить значение от мышь раз в 8 мс). Это означает, что Windows сама получает значение с некоторой задержкой. Практически все игровые мыши имеют частоту обновления 1000 Гц (задержка 1 мс).
+0

Я не верю, что скорость не постоянна. Колебания, подобные шуму, происходят примерно через каждые 20-30 мс. Когда человек перемещает свою руку, изменения скорости не могут быть такими быстрыми с высокой частотой. Изменения скорости, вызванные движением рук, следующие по синусовой форме (во втором сюжете), а не по мелочам. – NESHOM

0

Скорее всего потому, что графика автоматическое масштабирование является расширением данных по максимуму и, таким образом, небольшие различия скорости выглядят могучий большим.

Кроме того, выбор графика line не является хорошим выбором, поскольку он создает иллюзию «знания» данных между точками данных. Более подходящим является график рассеяния (points), imo.

 Смежные вопросы

  • Нет связанных вопросов^_^