2017-09-13 9 views
1

私はrxtxライブラリの助けを借りてjavaプログラムを使用してarduino unoデータを読み込もうとしています。私はこれにCOM8シリアル通信ポートを使用しています。私はwin10を使用しています。java.io.IOException:基になる入力ストリームが0バイトを返しました

私の問題:私は 'serial.print'を使用しているとき、java関数がうまく動作し、arduinoが送信しているすべてを取得しています。しかし、私はarduinoで 'serial.write'を使用しようとするとioexceptionが発生します "java.io.IOException:基になる入力ストリームがゼロバイトを返しました" なぜか分かりません。 私の必要性は、 'serial.write'メソッドを使用することです、コードで何が間違っているか教えてください。 serial.writeはしませんが、

#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()); 
    } 
} 

答えて

0

私は最後の行を壊すserial.printlnを使用していました:

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コード:両方のコードがダウン

Java関数のコードです。それは改行をrecorgnizesまで、他の側でJavaのreadLine()方法は、行全体を読み込む(\ n)が

問題:。「\ n」はserial.write()の場合は、何の改行が存在しないので、readLine()すべての行を見つけることができず、java.io.IOException: Underlying input stream returned zero bytes は、readLine()を実行するには1行の改行が必要です。

ソリューション:serial.write()を使用してながら手動で改行声明( "\ n")を提供

関連する問題