COMポートから何かを読み取る際に問題があります。私はJavaFXアプリケーションでtxrxライブラリを使用しています。ここではそれが読んでいるものを表示するコードです:InputStreamからの全行を表示
public void serialEvent(SerialPortEvent evt) {
String bytesin = null;
String fullLine = " ";
if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try
{
byte singleData = (byte)input.read();
if (singleData != CR_ASCII)
{
bytesin = new String(new byte[] {singleData});
fullLine = fullLine+bytesin;
System.out.println(fullLine);
}
else if (singleData == CR_ASCII)
{
System.out.println("CR detected!");
}
else
{
statusLabel.setText("Read!");
}
}
catch (Exception e)
{
statusLabel.setText("Failed to read data. (" + e.toString() + ")");
System.out.println("Failed to read data. (" + e.toString() + ")");
}
}
}
は==そのコードの問題点は、行ごとに単一の文字のすべてを表示することです。しかし、私のコードの出力はこれを与え
**T-Pod-1Ch**(Char 13)(Char 10)
:
*
*
T
-
P
o
d
-
1
C
h
*
*
CR detected!
*
*
T
-
P
o
d
-
1
C
h
*
*
CR detected!
なぜ他のことをしますか? 'fullLine'を空白文字に設定した後、ストリームから単一の文字を読み込み、' System.out.println(fullLine) 'を実行します。テキスト全体を読むには、 'BufferedReader'を作成し、' readLine() 'を呼び出してみてください。 –