我刚刚在我的RPi 3中添加了Adafruit 2.2“ PiTFT,并且其中包含的四个按钮都存在问题。我开始使用GPIO,但是在反复触发回调或未按任何操作时出现了很多问题,我但是,确实确实给人以印象,所有四个按钮都可以正常工作,因为我正在为每个按钮打断。
我切换到PIGPIO并在线查看了示例,这对于GPIO17上的按钮正常工作,但对其他三个按钮均无效。我以为可能只有第一个“接受了”,所以我尝试以不同的顺序分配回调或删除一些回调,但是没有运气。我的代码(从其他示例中复制)出什么问题了,对您来说很重要吗?
按17键将按预期方式打印出文本,其他任何都不做。
最终这将以循环方式运行,以捕获温度和湿度读数并将其记录下来,我的计划是使用按钮关闭程序,关闭程序并关闭Pi和其他一些辅助任务。
oraConnection = new OracleConnection();
da = new OracleDataAdapter();
ds = new DataSet();
oraConnection.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.20.10.8)(PORT=1521))(CONNECT_DATA=(SID=orcl12c)));";
cmdText = "begin open :1 for select * from adr; open :2 for select * from person; end;";
cmd = new OracleCommand();
cmd.CommandText = cmdText;
cmd.Connection = oraConnection;
cmd.CommandType = CommandType.Text;
OracleParameter refcur1 = cmd.Parameters.Add("Refcur", OracleDbType.RefCursor);
refcur1.Direction = ParameterDirection.Output;
OracleParameter refcur2 = cmd.Parameters.Add("Refcur", OracleDbType.RefCursor);
refcur2.Direction = ParameterDirection.Output;
da.SelectCommand = cmd;
da.Fill(ds);
答案 0 :(得分:0)
经过一些比较和测试我的代码现在可以正常工作了,看来问题出在与设置中断/回调有关,而不是事后清除(取消)它们。现在,下面的代码会在每次按下按钮时触发一次回调(我将其更改为RISING_EDGE,使用EITHER_EDGE时,如果您需要的话,它将在按下并释放时触发。
import pigpio
import time
btn17=17
btn22=22
btn23=23
btn27=27
def btnHandler17(pin,level,tick):
print("Button 17 Pressed",pin,level,tick)
def btnHandler22(pin,level,tick):
print("Button 22 Pressed",pin,level,tick)
def btnHandler23(pin,level,tick):
print("Button 23 Pressed",pin,level,tick)
def btnHandler27(pin,level,tick):
print("Button 27 Pressed",pin,level,tick)
pi = pigpio.pi()
if pi.connected:
pi.set_pull_up_down(btn17, pigpio.PUD_UP)
pi.set_mode(btn17, pigpio.INPUT)
cb17 = pi.callback(btn17, pigpio.RISING_EDGE, btnHandler17)
pi.set_pull_up_down(btn22, pigpio.PUD_UP)
pi.set_mode(btn22, pigpio.INPUT)
cb22 = pi.callback(btn22, pigpio.RISING_EDGE, btnHandler22)
pi.set_pull_up_down(btn23, pigpio.PUD_UP)
pi.set_mode(btn23, pigpio.INPUT)
cb23 = pi.callback(btn23, pigpio.RISING_EDGE, btnHandler23)
pi.set_pull_up_down(btn27, pigpio.PUD_UP)
pi.set_mode(btn27, pigpio.INPUT)
cb27 = pi.callback(btn27, pigpio.RISING_EDGE, btnHandler27)
time.sleep(30)
cb17.cancel()
cb22.cancel()
cb23.cancel()
cb27.cancel()
pi.stop()
else:
print("Unable to connect PIGPIO, exiting")
exit(0)