1
COM 포트의 배열을 사용하고 동적으로 차트에 표시하는 프로그램을 바탕 화면에 쓰고 있습니다. 프로그램은 다음과 같은 예외와 함께 실패 후 잠시 동안 고장없이 실행되지만 :스레드 "JavaFX 응용 프로그램 스레드"예외 java.lang.NullPointerException
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:344)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:267)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:521)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:505)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$399(QuantumToolkit.java:334)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$40/432581434.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$144(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$36/1963387170.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
응용 프로그램이 계속 실행됩니다. 텍스트 파일에 데이터를 계속 저장하지만 닫기 버튼을 제외한 모든 버튼이 활성화되지 않습니다. 누구든지 아이디어가 있다면 도움을주십시오. 여기
이 몇 가지 코드public class FXMLController implements Initializable {
public static XYChart.Series<Number, Number> hourDataSeries;
@FXML
public Label label;
@FXML
public Label statusbar;
@FXML
public LineChart lineChart;
@FXML
public NumberAxis xAxis;
@FXML
NumberAxis yAxis;
@FXML
MenuItem close;
@FXML
MenuItem Options;
@FXML
MenuItem about;
@FXML
Button connect;
@FXML
public Label hexString;
@FXML
private void close(ActionEvent event) throws SerialPortException {
//COMConnect.serialPort.closePort();
System.exit(0);
}
@FXML
private void connect(ActionEvent event) {
OpenScene openScene = new OpenScene("/SceneCOM.fxml", "Options");
}
@FXML
private void showStatistics(ActionEvent event) {
OpenScene openScene = new OpenScene("/SceneStatistics.fxml", "Statistics");
}
@FXML
private void aboutit(ActionEvent event) {
OpenScene openScene = new OpenScene("/SceneAbout.fxml", "About");
}
@FXML
private void getconnect(ActionEvent event) {
if (COMConnect.b == true) {
COMConnect.b = false;
try {
COMConnect.serialPort.closePort();
} catch (SerialPortException ex) {
Logger.getLogger(FXMLController.class.getName()).log(Level.SEVERE, null, ex);
}
connect.setText("Connect");
} else {
COMConnect.b = true;
COMConnect.comConnect();
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
hourDataSeries = new XYChart.Series<Number, Number>();
label.textProperty().bind(COMConnect.EventListener.valueProperty);
COMConnect.connectProperty.setValue("Connect");
connect.textProperty().bindBidirectional(COMConnect.connectProperty);
statusbar.textProperty().bind(Typewriter.status);
hexString.textProperty().bind(TypewriterHexString.hexStr);
xAxis.setLabel("Time");
xAxis.setTickUnit(1);
xAxis.setTickLabelFormatter(new NSC());
yAxis.setLabel("density," + superscript(" kg/m3"));
xAxis.setForceZeroInRange(false);
lineChart.setLegendVisible(false);
lineChart.setCursor(Cursor.CROSSHAIR);
lineChart.getData().add(hourDataSeries);
}
}
및
javafx.application.Platform.runLater(new Runnable() {
@Override
public void run() {
valueProperty.setValue(formatt(second) + superscript(" kg/m3"));
if (y > 10) {
hourDataSeries.getData().remove(0);
}
data = new XYChart.Data<Number, Number>(y, second);
data.setNode(new HoveredThresholdNode(0, second, ""));
hourDataSeries.getData().add(data);
System.out.println(hourDataSeries.getData().toString());
y++;
}
});
}
코드를 공유하십시오. 그렇지 않으면 어떤 일이 벌어지는 지 알 수 없습니다. –
@ JoséPereda 프로그램은 22 초마다 COM 포트에서 데이터를 수신합니다. 오류 전 720 번 마지막 수신 데이터 그런 다음이 예외가 있습니다. 이것은 jre의 버그 일뿐입니다. – sabracadabra
어떤 직렬 라이브러리를 사용하고 있습니까? –