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上取下了一根電線,並輕輕地將它放在輸入引腳端口並「擺動」了很多。非常科學,我知道。 :) –