【问题标题】:String serial communication字符串串行通信
【发布时间】:2013-03-23 05:44:56
【问题描述】:

我现在刚刚学习 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。

【问题讨论】:

  • 您查看过串行监视器中的 Arduino 输出吗?我们是否知道问题出在 Java 代码中? input 是如何声明的?
  • 是的,我把它贴在我说“在我的 Arduino 串行监视器中我得到这个:”的下面,我几乎可以肯定问题出在 java 代码中。输入被声明为 java.io.InputStream 包中的 InputStream
  • 你能添加代码显示input是如何构造和打开的吗?看看它如何与您的串行端口关联会很有用。

标签: java android serial-port arduino


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多