我现在才学习 Java 大约几周。我的最终目标是让我的 Arduino 测量一些传感器并通过 USB 电缆将结果发送到我的 Android。然而,我只是想让我的 Arduino 首先与我计算机上的 Java 控制台进行通信,然后我认为它几乎是从那里复制和粘贴的。
只要是一个简单的字节,我就可以让我的 Arduino 和 Java 控制台相互通信。任何通过的事情都会给我带来二次方程爆炸的结果。
在我的 Arduino 串行监视器中,我得到以下信息:
Engine Temp:100
Air Temp:95
Engine Speed:10000 RPM
Wheel Speed:30 MPH
在我的 Java 控制台中我得到了这个:
Normal println
[B@6f5f6479String
€˜3Àf`Ì󀘀UTF
??3?f`??
这是我的读者代码:
@Override
public void serialEvent(SerialPortEvent arg0) {
byte[] readBuffer = new byte[1000];
try {
int availableBytes = input.available();
if (availableBytes > 0) {
// Read the serial port
input.read(readBuffer, 0, availableBytes);
// Print it out
System.out.println("Normal println");
System.out.println(readBuffer);
System.out.println("\nString");
System.out.println(new String(readBuffer, 0, availableBytes));
System.out.println("\nUTF");
System.out.println(new String(readBuffer,"UTF-8"));
System.out.println("\nDone");
}}
catch (IOException e) {
}
}
输入是我的输入流。
最佳答案
确保Arduino和android上的串口速度相同。提供的代码没有显示串行端口是如何定义和打开/启动的,因此不可能知道这是否是问题所在。
当串行线的两个端点配置不相似时,Android 上显示的字符看起来就像典型的垃圾。
看起来 Arduino 正确地感知了引擎的动态?
关于java - 字符串串行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583823/