java.io.IOException:底层输入流返回零字节
java.io.IOException: Underlying input stream returned zero bytes
我正在尝试在 rxtx 库的帮助下使用 java 程序读取 arduino uno 数据。我为此使用 COM8 串行通信端口。我用的是win10.
我的问题:当我使用 'serial.print' 时,然后向下 java 函数工作正常并检索 arduino 发送的所有内容。但是当我尝试在 arduino 中使用 'serial.write' 时,会发生 ioexception
"java.io.IOException: Underlying input stream returned zero bytes"
我不知道为什么。
我需要使用 'serial.write' 方法,请告诉我代码有什么问题。两个代码都已关闭
Java函数代码:
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
String inputLine=input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
// Ignore all the other eventTypes, but you should consider the other ones.
}
arduino uno代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
void setup() {
mySerial.begin(9600); // Setting the baud rate of Software Serial Library
Serial.begin(9600); //Setting the baud rate of Serial Monitor
}
void loop() {
if(mySerial.available() > 0) {
Serial.print(mySerial.read());
}
}
我使用的是 serial.println
,它在最后打断了行,而 serial.write
则没有。另一方面,java 的 readLine()
方法读取整行,直到它重新识别换行符。(\n)
问题:在serial.write()
的情况下,没有换行符“\n”,所以readLine()
根本找不到任何一行结果 java.io.IOException: Underlying input stream returned zero bytes
readLine()
至少需要一个换行符。
解决方法:在使用serial.write()
时手动提供换行语句("\n")
我正在尝试在 rxtx 库的帮助下使用 java 程序读取 arduino uno 数据。我为此使用 COM8 串行通信端口。我用的是win10.
我的问题:当我使用 'serial.print' 时,然后向下 java 函数工作正常并检索 arduino 发送的所有内容。但是当我尝试在 arduino 中使用 'serial.write' 时,会发生 ioexception "java.io.IOException: Underlying input stream returned zero bytes" 我不知道为什么。 我需要使用 'serial.write' 方法,请告诉我代码有什么问题。两个代码都已关闭
Java函数代码:
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
String inputLine=input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
// Ignore all the other eventTypes, but you should consider the other ones.
}
arduino uno代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
void setup() {
mySerial.begin(9600); // Setting the baud rate of Software Serial Library
Serial.begin(9600); //Setting the baud rate of Serial Monitor
}
void loop() {
if(mySerial.available() > 0) {
Serial.print(mySerial.read());
}
}
我使用的是 serial.println
,它在最后打断了行,而 serial.write
则没有。另一方面,java 的 readLine()
方法读取整行,直到它重新识别换行符。(\n)
问题:在serial.write()
的情况下,没有换行符“\n”,所以readLine()
根本找不到任何一行结果 java.io.IOException: Underlying input stream returned zero bytes
readLine()
至少需要一个换行符。
解决方法:在使用serial.write()
时手动提供换行语句("\n")