0

我在我的 Raspberry Pi 上运行一个带有中断引脚的 NFC 阅读器,我编写了一个脚本来让它运行。到目前为止,它工作得很好,但在某些情况下,SPI xfer 崩溃并出现OSError: [Errno 9] Bad file descriptor

当我收到 GPIO 引脚的中断时,整个 SPI 部分都会发生 - 这可能是个问题吗?我知道代码不应该在中断上做太多事情,这可能会导致崩溃。

在这里分享的代码有点多,但我正在使用带有 Adafruit 库的 PN532 芯片https://github.com/adafruit/Adafruit_Python_PN532 - 我知道它已被弃用,但与 C 实现的差异非常小。我正在运行pn532.read_passive_target(timeout=0.2)从该 NFC 芯片读取 UID 并使其扫描 NFC 卡。

它工作得很好,直到我经常这样做。为了测试,我一次又一次地将卡片放在阅读器上,没有任何延迟。大约5-10次后它崩溃了。

任何想法如何解决这个问题?很抱歉对错误的错误描述。

4

1 回答 1

0

我重构了代码,在中断过程中不做任何 SPI 工作。中断现在只处理状态,没有别的,主线程然后检查状态并处理它。这样我就无法再次重现该错误。

注意:不要在中断进程回调上使用 SPI 并使用状态机或 python 调度。

于 2019-11-05T15:02:35.727 回答