澄清:这不是一个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;更标准的用例
暂无答案!
目前还没有任何答案,快来回答吧!