java - 如何从串行端口读取文本?

标签 java string serial-port arrays

我正在尝试通过 Java 从 Windows 串行端口读取数据。我有 javax.comm 库,并且能够获取一些数据,但不是正确的数据。当我将端口读入字节数组并将其转换为文本时,我得到一系列字符,但没有真正的文本字符串。我尝试将字节数组指定为“UTF-8”和“US-ASCII”。有谁知道如何从中获取真实文本?

这是我的代码:

while (inputStream.available() > 0) {
 int numBytes = inputStream.read(readBuffer);
 System.out.println("Reading from " + portId.getName() + ": ");
 System.out.println("Read " + numBytes + " bytes");
}

System.out.println(new String(readBuffer));
System.out.println(new String(readBuffer, "UTF-8"));
System.out.println(new String(readBuffer, "US-ASCII"));

前三行的输出不允许我复制和粘贴(我假设是因为它们不是普通字符)。这是十六进制的输出: 78786000e67e9e60061e8606781e66e0869e98e086f89898861878809e1e9880

我正在从 Hollux GPS 设备读取数据,该设备以字符串格式输出。我确信这一点,因为我是通过 C# 完成的。

我用于通信的设置(我知道这些设置是在 C# 应用程序中正确的): 波特率:9600 数据位:8 停止位:1 奇偶校验:无

最佳答案

我无法从您的代码中看出,但看起来您正在使用 java.io.InputStream 来读取该对象。您应该使用 java.io.BufferedReader 或 java.io.InputSreamReader。

有很多方法可以做到这一点,但这就是我们使用的:

javax.comm.SerialPort port = ...{initialize your serial port}
BufferedReader portReader = 
    new BufferedReader(new InputStreamReader(port.getInputStream()));

try {
    String line = portReader.readLine();
} catch(IOException e) { ... }

关于java - 如何从串行端口读取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/484392/

相关文章:

c# - 使用 SerialPort 对象发送大于 0x7F 的字节

java - 类 从 Servlet 请求数据

java - 信息 : TLD skipped. URI:<标记名称 URI> 已定义

java - 如何从我的休息服务发送一个 json 对象,以便我可以在客户端 javascript 中解析

Python 从外部 C 程序调用中输出带有换行符的字符串

php - 将字符串拆分为字符对数组

c# - 如何在 C# 中异步监听多个串口

java - 如何使用Java读取原始串行数据?

java - 通过 ByteArrayOutputStream 打印创建的 iText pdf 文件

html - 如何转换HTML标签中的转义字符?