2015-07-12 5 views
0

Я читаю данные из последовательного порта. Данные взяты из IMU, и я разрабатываю алгоритм распознавания жестов. Я не хочу останавливать всю программу с помощью метода Thread.sleep(), мне просто нужно прочитать два набора данных на расстоянии 10 мс. У моего приложения есть качающийся графический интерфейс.Как я могу использовать таймер в Java

float x0, x1; 
    x0 = getXacc(); 
    x0 += 17000; 
    x0 /= 1000; 
    //wait 10ms 
    x1 = getXacc(); 
    x1 += 17000; 
    x1 /= 1000; 
+2

http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html – jcoppens

+0

@PavolDudak Если вы хотите, чтобы ваше приложение не останавливалось между назначениями переменных, вы должны создать отдельный поток, который может продолжать работать, пока выполняются назначения. –

+1

Сообщите о вашей проблеме. Опубликуйте небольшую компилируемую и исполняемую программу, которая иллюстрирует соответствующие детали вашей проблемы. Я предполагаю, что вам может понадобиться таймер Swing, но я разочарован отсутствием соответствующей информации о проблемном пространстве. –

ответ

1

Используйте @TimBiegeleisen ответ и поставить свой код на новую тему:

new Thread(){ 
    @Override 
    public void run(){ 
     //TimBiegeleisen code 
    } 
}.start(); 
+0

Я думаю, это то, что имел в виду ОП. Мой ответ - лучшее решение, которое я могу придумать для данного ОП. –

+0

Я тоже немного смущен, ваш ответ должен быть отмечен как принятый, я хочу только дополнить это вашим, я дал вам +1 @TimBiegeleisen – maskacovnik

2

Использование Thread.sleep():

float x0, x1; 
x0 = getXacc(); 
x0 += 17000; 
x0 /= 1000; 
Thread.sleep(10); // tell current Thread to sleep for 10 milliseconds 
x1 = getXacc(); 
x1 += 17000; 
x1 /= 1000; 

Примечание: Java-API не гарантирует, что Thread.sleep() будет приостановить выполнение текущего потока для точно времени, указанного (в данном случае 10мс), но он сделает все возможное, чтобы достичь этого.

+1

Я не могу это сделать. Вся программа не может остановиться. –

+0

Кто сказал, что вся программа остановится? Любые другие потоки в вашей программе будут продолжать выполняться. –

+0

Да, программа остановится, я пробовал. –

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