因此,我正在用Java开发Phidg​​et传感器项目。想法是将传感器的值发送到数据库。

在onSensorChanged方法内部,我有一个uploadToServer方法调用。问题在于,当使用快速数据速率并且我转动拨号盘或移动滑块时,onSensorChanged方法几乎立即被触发,从而导致转盘拨号每次触发10-20次上载uploadToServer方法。

我曾尝试将数据速率减慢到1000ms,但它仍会打印多个值,该值仅在移动之后,然后在数据速率长度之后显示。

    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


任何想法将不胜感激。

最佳答案

您是否设置了sensorChangeTrigger值以及数据速率?这两个参数在某种程度上相互覆盖。如果您设置了更改触发器,则无论输入的数据速率如何(取决于您在代码中设置参数的顺序),每次输入变化那么多时,它将触发一个事件。这听起来像您正在发生的事情,您只应在代码中设置数据速率或更改触发器,而无需同时设置两者。

10-07 20:03
查看更多