我现在正在学习Java大约几个星期。我的最终目标是让我的Arduino测量一些传感器并通过USB线将结果发送到我的android。然而,我只是想让我的Arduino首先在我的计算机上与Java控制台进行通信,然后我认为它几乎可以从那里进行复制和粘贴。
只要它是一个简单的字节,我就可以让我的Arduino和Java控制台相互通信。任何通过的东西都会让我得到二次方程爆炸的结果。
在我的Arduino串口监视器中,我得到了这个:
发动机温度:100
气温:95
发动机转速:10000 RPM
车轮速度:30英里/小时
在我的Java控制台中我得到了这个:
普通打印件 [B @ 6f5f6479
的字符串
€~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) {
}
}
输入是我的InputStream。
答案 0 :(得分:0)
确保Android上的Arduino和串口速度相同。提供的代码没有显示如何定义和打开/启动串口,因此无法知道这是否是问题。
在android上显示的字符看起来像是在串行线的两个端点配置不同时看到的典型垃圾。
看起来Arduino正确感知引擎的动态?