我已经实施了地面站软件。它以1Hz的频率连续读取串行输入以获取新数据,并将更新软件的不同部分。这就是我到目前为止的做法:(只是重要的部分)
复习功能:
public void refresher(SerialPort rx){
refreshed++;
readRX(rx);
if(refreshed<5) return;
parseString(lastTelemetry);
updateModel(Double.parseDouble(parsedLastTelemetry.get(telemetry.get("heading"))),Double.parseDouble(parsedLastTelemetry.get(telemetry.get("pitch"))),Double.parseDouble(parsedLastTelemetry.get(telemetry.get("roll"))));
}
连接按钮的动作事件:
connect.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
if(!portSelect(portNum)) return;
disconnect.setDisable(false);
Runnable r1 = new Runnable() {
public void run() {
try {
while (true) {
refresher(rx);
Thread.sleep(1000L);
}
} catch (InterruptedException iex) {}
}
};
Thread thr1 = new Thread(r1);
thr1.start();
串行阅读器功能:ReadRx
private void readRX(SerialPort rx){
while(ss.hasNextLine()){
String temp = ss.nextLine();
if (temp.isEmpty()) continue;
if(temp.charAt(0)!='7'|| temp.charAt(1)!='0' || temp.charAt(temp.length()-1)!=';') continue;
if(temp.lastIndexOf("7098")!=0) continue;
lastTelemetry = temp;
System.out.println(lastTelemetry);
break;
}
}
问题是当软件从串行CPU风扇读取开始像地狱一样工作,软件看起来没有响应。当我试图关闭软件时,也没有响应。 这可能是一个愚蠢的问题,但我想要一种方式,刷新功能每隔1秒与其他进程并行运行,其他部分通常执行自己的任务。\
请不要像专家那样回答我:)我是java和javafx的新手,之前从未做过这项工作。