java - 从 Arduino 读取串行数据

标签 java serial-port arduino

我正在尝试使用 Java 从 Arduino 读取串行数据。我已遵循教程 Arduino and Java

到目前为止,我已经可以正常工作了,只是我没有立即读取整个串行数据。例如,Arduino 应该发送 0.71,我读入 0,然后读入 0.71 或其他组合。有时我读得很好,但更多时候,数据是 splinter 的。

我有一种预感,如果我将发送的数据类型更改为字节,我的程序就可以了,但是我需要在正在传输的数据中使用浮点精度。如何解决这个问题?

最佳答案

串行协议(protocol)(例如用于 USB 串行的协议(protocol))是面向字节的,而不是面向数据包的。因此,无法保证读取会返回另一端发送的整个“消息”,或者正如您所观察到的那样,仅返回其中的一部分,因为没有消息或数据包的概念。

相反,您需要以某种方式分隔消息 - 例如通过附加换行符 - 或在消息前添加长度字段,以便您知道要读取多少字节。

关于java - 从 Arduino 读取串行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467972/

相关文章:

java - 处理白屏?

c++ - 如何在一个类中声明另一个类的实例

c++ - Arduino 类中的 Serial.println

c - 在 ttyS0 串口上获取 termios 属性时出现输入/输出错误

c++ - 如何对 16 位数字执行按位运算 (Arduino)

java - 如何实现静态的项目范围偏好系统?

c - 串口通讯

java - 尝试某些请求时出现 Spring Security 和 Angular 401 错误

java - Spring Integration WebFlux.outboundGateway 永远不会被调用

java - 并行计算开销