2017-06-02 23 views
0

我使用rxtx库通过从我的arduino到java程序的串行发送传感器数据。问题在于新值会被快速推送到BufferedReader中,我无法实时处理这些值。我从基于事件的实现转移到每隔100毫秒轮询一次,并希望放弃两者之间的所有值。在缓冲读取器中丢弃数据

是否有可能清除缓冲读取器而不知道我必须跳过多少字节?调用read Line时while缓冲区准备好的while循环看起来非常乏味,我不确定它是否足够快。

读取一个值可以清除缓冲读取器,等待100 ms并再次读取最早的值就可以了。另一种可能性是限制Arduino发送数据的速度,但这是我最不喜欢的方式,因为将来我可能会依赖更高的速度。

回答

0

一个while循环与调用读取线,而缓冲区准备好似乎非常繁琐,我不知道它是否会足够快。

计算机java运行速度有多慢,这个速度与您有关吗? PC通常比Arduino上的串行线快几个数量级。

另一种可能性是限制arduino发送数据的速度,但这是我最不喜欢的方法,因为将来我可能会依赖更高的速度。

可能是最好的选择。如果以后需要更高的速度,那么更新Arduino上的代码。

+0

计算机似乎不成问题。 Arduino IDE的串行监视器工作正常,但将这些值发送给java是问题的起点。一旦我今天晚些时候回家,我会尝试while循环解决方案。我只是认为必须有一个我没有想到的更好的解决方案。 – John

+0

谢谢。 while循环解决了这个问题。似乎依靠事件听众产生了一个瓶颈。 – John