如何更改Phidg​​et传感器的数据速率?

时间:2014-12-18 02:03:38

标签: java sensor

所以我正在使用Java中的Phidg​​et传感器项目。我们的想法是将传感器的值发送到数据库。

在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

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

您是否设置了sensorChangeTrigger值以及datarate?这两个参数在某种程度上相互颠覆。如果您有更改触发器设置,则每次输入更改时都会触发事件,而不管数据速率如何(取决于您在代码中设置参数的顺序)。这听起来像是你发生的事情,你应该只在你的代码中设置数据速率或更改触发器,没有必要同时设置它们。