我对如何继续编写程序感到困惑。
基本上,它连接到多个串行设备,然后根据设备的响应更新javafX应用程序(我首先要向机器发送消息)。所以我所做的是创建一个在服务线程中运行的线程,这样我的程序就不会冻结,线程可以暂停直到消息被读取(在通过串行设备发送和接收消息之间有延迟) 。
service = new Service() {
@Override
protected Task<String> createTask() {
return new Task<String>(){
@Override
protected String call() throws Exception {
new Thread(thread).start();
return null;
}
};
}
};
线程执行某些循环,不断发送和读取消息。
@Override
public synchronized void run() {
while(serialOn && isRunning){
sendMessages();
}
}
public synchronized void sendMessages(){
sendSerial1();
this.wait();
sendSerial2();
this.wait();
}
public synchronized void readMessage1(){ // same readMessage2 for the sendSerial2()
getMessage(); // updates variables that are bound to the Javafx App
this.notify();
}
但是,我认为服务在事件启动我的串行线程之前完成(即成功或失败)。但我希望服务在程序发送和接收消息时继续运行。
如果您需要更多代码,请告诉我,它有点长并需要串行设备运行,但如果它让问题更容易理解,我可以将其包含在此处。