Ich habe Probleme beim Lesen etwas von einem COM-Port, ich benutze TXRX-Bibliothek in einer JavaFX-Anwendung. Hier ist der Code, der zeigt, was es zu lesen:Anzeige gesamte Zeile von 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() + ")");
}
}
}
== Das Problem mit diesem Code ist, dass es zeigt alles in einem einzigen Zeichen pro Zeile. Mein USB-Gerät ausgibt den folgenden Text (die Chars ASCII sind, nicht Zeichen):
**T-Pod-1Ch**(Char 13)(Char 10)
aber mein Code Ausgang ergibt dies:
*
*
T
-
P
o
d
-
1
C
h
*
*
CR detected!
*
*
T
-
P
o
d
-
1
C
h
*
*
CR detected!
Warum sollte es noch etwas anderes tun? Sie setzen 'fullLine' auf ein Leerzeichen und lesen dann einfach ein einzelnes Zeichen aus dem Stream und machen dann eine' System.out.println (fullLine) '. Wenn Sie eine ganze Textzeile lesen möchten, warum erstellen Sie nicht einen 'BufferedReader' und rufen' readLine() 'darauf auf? –