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

标签 java sensors

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

在 onSensorChanged 方法内,我有一个 uploadToServer 方法调用。问题是,当使用快速数据速率并转动拨盘或移动 slider 时,onSensorChanged 方法几乎立即被触发,导致 uploadToServer 方法每次拨盘触发 10-20 次。

我尝试将数据速率减慢至 1000ms,但它仍然打印多个值,即移动后的值,然后是数据速率长度之后的值。

    interfacephid.setDataRate(0, 1000);

例如,如果我从传感器值 0 开始,然后快速将转盘旋转一整圈。然后我得到两个读数,一个在 100 区域附近,然后是最后的休息位置 999。理想情况下,我宁愿只打印最终位置。

我不知道为什么我会得到第一个阅读。数据速率为 1000ms,因此理论上如果我快速移动 slider ,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值以及数据速率?这两个参数在某种程度上相互覆盖。如果您设置了更改触发器,则每当输入发生如此大的变化时,无论数据速率如何(取决于您在代码中设置参数的顺序),它都会触发一个事件。这听起来像是发生在您身上的事情,您应该只在代码中设置数据速率或更改触发器,没有必要同时设置两者。

关于java - 如何更改 Phidg​​et 传感器的数据速率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538097/

相关文章:

windows-phone-8 - WP8 应用程序使用传感器恢复

Java - 如何将从一个类的方法中生成的变量传递到另一个类?

JavaFX Accordion 效果

java - 如何解决 htmlUnit WrapsDriver 错误

c - 如何转换温度传感器得到的值?

c++ - 从加速度计数据测量速度和距离

java - Log4j 找不到 appender,但它们存在

java - 当 swingWorker 线程完成时,我是否需要收集它们?

python - 使用 Raspberry Pi Python SMBus 乱序接收 I²C 字节

silverlight - 带传感器的Windows Phone mvvm