2014-12-18 5 views
1

Так что я работаю над проектом датчика Phidget в Java. Идея заключается в отправке значений датчиков в базу данных.Как изменить скорость передачи данных Phidget Sensor?

Внутри метода onSensorChanged у меня есть метод метода uploadToServer. Проблема в том, что при использовании быстрой скорости передачи данных, а я поворачиваю циферблат или перемещаю ползунок, метод onSensorChanged запускается почти мгновенно, что приводит к тому, что метод uploadToServer запускается 10-20 раз за один поворот.

Я попытался замедлить скорость передачи данных до 1000 мс, но он по-прежнему печатает несколько значений, значение сразу после перемещения, а затем после длины передачи данных.

interfacephid.setDataRate(0, 1000); 

Так, например, если я начинаю с значения датчика 0 и быстро передвигаю его полный поворот. Затем я получаю два показания, один вокруг 100, а затем в конечном месте отдыха 999. В идеале я бы предпочел просто распечатать окончательную позицию.

Я понятия не имею, почему я получаю первое чтение. Скорость передачи данных составляет 1000 мс, поэтому теоретически, если я быстро перемещаю ползунок, метод onSensorChanged должен запускаться только через 1 секунду, в результате чего на сервер отправляется 1 значение.

У меня возникло ощущение, что мне, возможно, придется выполнить отдельную работу, так как это снижает скорость передачи данных, не выполняет работу.

Вот мой onSensorChanged метод, ничего необычного здесь:

public void sensorChanged(SensorChangeEvent arg0) { 
    System.out.println("Slider value is "+arg0.getValue()); 
    uploadSensorValue("sliderValue",sensorValue); 
} 

Консольный вывод похож на это (обычно больше):

Slider value is 878 
Slider value is 721 
Slider value is 513 
Slider value is 328 

Любые идеи будут оценены.

ответ

0

Установили ли вы значение датчикаChangeTrigger, а также datarate? Эти два параметра несколько переопределяют друг друга. Если у вас установлен триггер изменения, он будет запускать событие каждый раз, когда вход изменяется настолько сильно, независимо от datarate (в зависимости от заказа, который вы устанавливаете в своем коде). Это похоже на то, что происходит с вами, вы должны только установить datarate или триггер изменения в свой код, нет необходимости устанавливать оба параметра.

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