1

我现在刚刚学习 Java 大约几个星期。我的最终目标是让我的 Arduino 测量一些传感器并通过 USB 电缆将结果发送到我的 android。但是,我只是想让我的 Arduino 先与计算机上的 Java 控制台通信,然后我认为它几乎是从那里复制和粘贴的。

只要是一个简单的字节,我就可以让我的 Arduino 和 Java 控制台相互通信。任何传递给我的结果都是二次方程爆炸的结果。

在我的 Arduino 串行监视器中,我得到了这个:

发动机温度:100

空气温度:95

发动机转速:10000 RPM

轮速:30 MPH

在我的 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) {

            }

    }

输入是我的输入流。

4

1 回答 1

0

确保Arduino和android上的串口速度一致。提供的代码未显示串行端口的定义和打开/启动方式,因此无法知道这是否是问题所在。

当串行线的两个端点配置不同时,android 上显示的字符看起来就像典型的垃圾。

看起来 Arduino 正在正确地感知引擎的动态?

于 2013-07-30T20:44:42.267 回答