java-simple-serial-connector APIを使用してアプリケーションを開発し、 を読み取り、シリアルポートに書き込みます。私はデータバイト を読み込み、それらをグローバル文字列変数(sReader)に割り当てるときに問題に直面しています。 sReaderは文字列全体を取得せず、その長さは毎回ランダムです。文字列sBufferをOutput(Output.append)に追加すると、文字列全体が常に表示されるため、すべてのバイトを受け取っていると確信しています。私はあなたのコードのいくつかの他の部分からsReaderにアクセスしたいと仮定していjava - グローバル文字列変数にinvokeAndWaitの値を割り当てることができません
public class SerialPortTest extends javax.swing.JFrame {
private String sReader = "";
private JTextArea outputTextArea;
private JLabel outputLabel;
private class Reader implements SerialPortEventListener {
private String sBuffer = "";
@Override
public void serialEvent(SerialPortEvent spe) {
if (spe.isRXCHAR() || spe.isRXFLAG()) {
if (spe.getEventValue() > 0) {
try {
//Read chars from buffer
byte[] bBuffer = serialPort.readBytes(spe.getEventValue());
sBuffer = new String(bBuffer);
SwingUtilities.invokeAndWait(
new Runnable() {
@Override
public void run() {
sReader = sBuffer;//does not assign full string
outputLabel.setText(sBuffer);//does not set full string
outputTextArea.setText(sBuffer);//does not set full string
outputTextArea.append(sBuffer);//This works! Why the above don't work?
}
});
} catch (SerialPortException | InterruptedException | InvocationTargetException ex) {
}
}
}
}
}
}
「Output」はインスタンス変数であり、慣例として小文字で始まることに注意してください。 – DNA
私はすぐに例を入力していたので事故でした。 – jadrijan