io—用于读取gpio引脚状态更改的JavaEPoll选择器

4szc88ey  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(269)

澄清:这不是一个raspberry pi(pi4j是表外的),所以我需要一个传统的java方法。
问题:java选择器是否可以配置为从gpio引脚读取上升沿?现在我正在采取一种非常基本的方法,它看起来像这样:

while(true) {

            if(driver.readPin(LCDDriver.BACK) == 1) {
                System.out.println("BACK");
                back();
                Thread.sleep(100);
            }
            if(driver.readPin(LCDDriver.UP) == 1) {
                System.out.println("UP");
                up();
                Thread.sleep(100);
            }
            if(driver.readPin(LCDDriver.DOWN) == 1) {
                System.out.println("DOWN");
                down();
                Thread.sleep(100);
            }
            if(driver.readPin(LCDDriver.OK) == 1) {
                System.out.println("OK");
                select();
                Thread.sleep(100);
            }
            if(driver.readPin(LCDDriver.HOME) == 1) {
                System.out.println("HOME");
                home();
                Thread.sleep(100);
            }
            Thread.sleep(100);

        }

readpin函数只是从fileinputstream(1或0)中读取一个值。这个无限循环是丑陋的,没有执行力,特别是手动等待处理按钮按下,而不是注册300毫秒。
我正在考虑用一个选择器来实现这一点,所以假设有4个通道我会为上升沿变化而报告。使用javanio有可能做到这一点吗?我的选择经验是严格使用serversocketchannels;更标准的用例

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题