У меня очень простая настройка android-things, где GPIO (выход) генерирует очень короткий (10u) импульс, и я пытаюсь прочитать этот импульс через другой GPIO (вход).
Однако журналы меня смущают: как я могу получить два «ложных» показания подряд? Если у меня есть выключатель света, я не могу выключить его дважды подряд ... Мне нужно включать его в промежутках, верно? Может ли 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