JavaFX Arduino通信(JSSC)-首先显示阶段,然后读取Arduino
我正在做一个简单的指纹扫描仪,它连接到我的Arduino Uno。我已经通过usb将我的电路连接到我的电脑,这样我就可以连续读取Arduino正在为指纹扫描仪处理的数据。我正在使用JavaFX为项目制作一个简单的UI。到目前为止,我已经完成了几个阶段 第一个是主舞台,上面有一个按钮。基本上,单击此按钮打开串行端口并侦听两种方式中的一种,即注册/验证模式(电路上的物理按钮,按下后将字符串“注册”或“验证”发送到串行端口)。按下注册按钮后,一个新的阶段打开,因为Arduino已经准备好注册打印,我不必再次阅读序列。扫描完指纹后,我填写了一张表单,然后点击提交按钮,该按钮获取指纹扫描仪创建的指纹id,并将其与表单中的一个字段(后台)链接。然后舞台结束,我开始重读这部连续剧 这就是问题的开始 我正在寻找要打开的窗口,但如何才能先打开窗口(取决于电路上按下的物理按钮),然后重新读取序列以了解用户是否已验证,然后更改窗口上的内容 我知道这可能看起来很复杂,这就是为什么下面会有一些代码JavaFX Arduino通信(JSSC)-首先显示阶段,然后读取Arduino,java,multithreading,javafx,arduino,jssc,Java,Multithreading,Javafx,Arduino,Jssc,我正在做一个简单的指纹扫描仪,它连接到我的Arduino Uno。我已经通过usb将我的电路连接到我的电脑,这样我就可以连续读取Arduino正在为指纹扫描仪处理的数据。我正在使用JavaFX为项目制作一个简单的UI。到目前为止,我已经完成了几个阶段 第一个是主舞台,上面有一个按钮。基本上,单击此按钮打开串行端口并侦听两种方式中的一种,即注册/验证模式(电路上的物理按钮,按下后将字符串“注册”或“验证”发送到串行端口)。按下注册按钮后,一个新的阶段打开,因为Arduino已经准备好注册打印,我不
submitForm.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
if(firstNameTextField.getText().length()>0 &&
lastNameTextField.getText().length()>0 &&
gpnTextField.getText().length() == 8)
{
enrollStage.hide();
try {
//System.out.println("winfwnif ");
if(readEnroll(sp)==true)
{
id++;
}
Employee employee = new Employee(Long.parseLong(gpnTextField.getText()), id);
pw = new PrintWriter(file);
pw.println(employee.getFP() + "," + employee.getGPN());
pw.close();
} catch (FileNotFoundException | SerialPortException | InterruptedException e2) {
e2.printStackTrace();
}
firstNameTextField.setText("");
lastNameTextField.setText("");
gpnTextField.setText("");
enrollStage.hide();
home.show();
try
{
home.close();
int mod = checkMode(sp);
if(mod == 1)
{
enrollStage.show();
}
else if(mod == 2)
{
boolean f = false;
//Thread.sleep(2000);
synchronized(verificationStage)
{
verificationStage.show();
Thread.sleep(2000);
f = readVerify(sp);
}
if(f)
{
userImageIV.setImage(new Image("/images/temp.png", 250, 400, true, false));
thumbIV.setImage(new Image("/images/greenThumb.png", 150, 300, true, false));
}
}
}
catch(SerialPortException | InterruptedException err)
{
}
}
}
});
我尝试在打开窗口后等待2秒钟,然后调用readVerify(SerialPort s),但由于某些原因,它读取打印,验证,然后打开窗口。我一直在尝试相反的方法-打开窗口,验证,然后在窗口上更改几个图像(如果验证)。我该怎么做呢
最后一件事
checkMode(SerialPort s)
基本上是用来读取电路上的按钮输入的。根据按下的按钮,checkMode(SerialPort s)返回1(注册模式)或2(验证模式)。我在有人问如何在加载窗口后运行代码时发现了这个问题。使用WindowEvent可能是一种解决方案,您可以分解代码,使readVerify()位于WindowEvent侦听器方法中
checkMode(SerialPort s)