五秒暂停

时间:2014-02-08 16:44:34

标签: java timer raspberry-pi

我正在为Raspberry Pi创建一个门锁系统。当用户刷卡时,门使用以下代码解锁:

piface.getRelay(PiFaceRelay.K0).open();

我试图在门前创建一个5秒的延迟然后使用以下行锁定:

piface.getRelay(PiFaceRelay.K0).close();

这是我曾经尝试并执行5秒延迟的代码,但是当前它解锁然后立即再次锁定,这没有足够的时间让一个人物理推开门:

piface.getRelay(PiFaceRelay.K0).open();

Timer autoLockTimer = new Timer(5000, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        piface.getRelay(PiFaceRelay.K0).close();
    }
});

autoLockTimer.setInitialDelay(5000);
autoLockTimer.setRepeats(false);
autoLockTimer.start();

我想我只是没有正确使用计时器。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:1)

为什么不简单(从头开始):

new Thread(new Runnable() {
    public void run() {
           piface.getRelay(PiFaceRelay.K0).open();
           Thread.sleep(5000);
           piface.getRelay(PiFaceRelay.K0).close();
    }
}).start();

答案 1 :(得分:1)

你确定你有继电器API吗? PiFacExample,java使用'close'打开上的继电器

答案 2 :(得分:0)

事实证明原始问题中发布的代码块工作正常!

但是我也在监视一个数据库,如果DB中的锁定状态为真(它曾经是),它会自动触发一个锁定命令,并且会在刷卡解锁后立即执行。这也是在计时器上运行。

解决方案是在用户刷卡时停止监控命令,然后在解锁门5秒后恢复监控。

感谢大家的建议!