java - 字符串串行通信

标签 java android serial-port arduino

我现在才学习 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@6f5f6479

String
€˜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/

相关文章:

c++ - 通过 USB 串行端口(C++ 控制台应用程序)在 Arduino 和 PC 之间进行通信

serial-port - 是否有通过串行端口传递零件号的约定?

java - 如何轻松地使 Java 应用程序对用户不可见?

Java内存泄漏与堆转储信息

java - 在 android 中通过来自 gmaps 的消息获取共享的位置坐标

java - 从 AlertDialog 返回一个值

synchronization - 共享资源 (TWI/ADC) - 消息队列或互斥体

java - 在 JPanel [][] 表上使用 mouseListener 单击

java - SQLITE_ERROR SQL 错误或缺少数据库( "VALUES"附近 : syntax error)

Android LocationClient 类已弃用,但在文档中使用