所以我正在使用Java中的Phidget传感器项目。我们的想法是将传感器的值发送到数据库。
在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 :(得分:0)
您是否设置了sensorChangeTrigger值以及datarate?这两个参数在某种程度上相互颠覆。如果您有更改触发器设置,则每次输入更改时都会触发事件,而不管数据速率如何(取决于您在代码中设置参数的顺序)。这听起来像是你发生的事情,你应该只在你的代码中设置数据速率或更改触发器,没有必要同时设置它们。