【发布时间】:2013-12-24 05:04:48
【问题描述】:
我正在使用 java comm 库来尝试完成对串行端口的简单读/写。我能够成功写入端口,并从输入流中捕获返回输入,但是当我从输入流中读取时,我只能读取 1 个字节(当我知道应该返回 11 个字节时)
我可以使用 Putty 成功写入端口,并在那里收到正确的返回字符串。我对 Java、缓冲区和串行 i/o 非常陌生,并且认为可能有一些明显的语法或对数据如何返回到 InputStream 的理解。有人可以帮我吗?谢谢!
case SerialPortEvent.DATA_AVAILABLE:
System.out.println("Data available..");
byte[] readBuffer = new byte[11];
try {
System.out.println("We trying here.");
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer, 1, 11);
System.out.println("Number of bytes read:" + numBytes);
}
System.out.println(new String(readBuffer));
} catch (IOException e) {System.out.println(e);}
break;
}
此代码返回以下输出:
Data available..
We trying here.
Number of bytes read:1
U
【问题讨论】:
-
您在哪里以及如何定义
inputStream? -
如果您期望 11 个字节,您需要继续阅读,直到获得所有 11 个字节。 available() 方法在这里对您没有帮助,您想读入第一个字节 0 而不是 1。然后是 1。然后是 2,然后是 3,等等。
标签: java buffer inputstream java-communication-api