我正在尝试通过 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/