1
我有一个非常简单的设置android-things设置,其中GPIO(输出)产生非常短的(10u)脉冲,并且我试图通过另一个GPIO(输入)读取该脉冲。GpioCallback如何连续两次注册“false”?
但是,我的日志让我感到很头疼:我怎么能连续得到两个“错误”的读数?如果我有电灯开关,我无法连续关闭两次......我需要将它打开,对不对? GpioCallback可以放下事件吗?我的时间太短了吗?电压之间是否会出现一个不会被视为“边缘”的软斜坡?
val gpioIn = PeripheralManagerService().openGpio(gpioPinName)
gpioIn.setEdgeTriggerType(Gpio.EDGE_NONE) // reset for Android Things bug
gpioIn.setDirection(Gpio.DIRECTION_IN)
gpioIn.setActiveType(Gpio.ACTIVE_HIGH)
gpioIn.setEdgeTriggerType(Gpio.EDGE_BOTH) // I should get all changes, right?
gpioIn.registerGpioCallback(object : GpioCallback() {
override fun onGpioEdge(gpio: Gpio?): Boolean {
netLog((gpio?.value ?: "null").toString())
return true
}
override fun onGpioError(gpio: Gpio?, error: Int) {
netLog("GPIO $gpio Error event $error")
}
})
导致
06-02 06:33:37.052 I/NetGpioListener: NET GPIO LISTENER: 118730013 true
06-02 06:33:37.091 I/NetGpioListener: NET GPIO LISTENER: 118769152 false
06-02 06:33:37.094 I/NetGpioListener: NET GPIO LISTENER: 118772102 false
我想重现您的问题。你使用的是什么gpio输出? – Blundell
我正在听第20针,我从VCC上取下了一根电线,并轻轻地将它放在输入引脚端口并“摆动”了很多。非常科学,我知道。 :) –