如何使用Python在Raspberry Pi上执行GPIO和SPI的正确清理

如何使用Python在Raspberry Pi上执行GPIO和SPI的正确清理,python,raspberry-pi,gpio,spi,Python,Raspberry Pi,Gpio,Spi,我正在用NRF24L01+在Arduino和Raspberry Pi之间进行无线通信试验。我能够建立连接并将数据发送到RPi,但当我停止并启动程序时,没有收到任何数据。不显示任何错误或警告消息。重启后一切正常,所以我认为我的清理代码有问题 这是我的密码: import RPi.GPIO as GPIO import time import spidev from libs.lib_nrf24 import NRF24 try: GPIO.setmode(GPIO.BCM)

我正在用NRF24L01+在Arduino和Raspberry Pi之间进行无线通信试验。我能够建立连接并将数据发送到RPi,但当我停止并启动程序时,没有收到任何数据。不显示任何错误或警告消息。重启后一切正常,所以我认为我的清理代码有问题

这是我的密码:

import RPi.GPIO as GPIO
import time
import spidev
from libs.lib_nrf24 import NRF24


try:

    GPIO.setmode(GPIO.BCM)

    pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1], [0xF0, 0xF0, 0xF0, 0xF0, 0xE1]]
    radio = NRF24(GPIO, spidev.SpiDev())
    radio.begin(0, 25)
    radio.setPayloadSize(32)
    radio.setChannel(0x76)
    radio.setDataRate(NRF24.BR_250KBPS)
    radio.setPALevel(NRF24.PA_MIN)
    radio.setAutoAck(True)
    radio.enableDynamicPayloads()
    radio.enableAckPayload()
    radio.openReadingPipe(1, pipes[1])
    radio.printDetails()
    radio.startListening()

    while True:

        while not radio.available(0):
            time.sleep(1/100)

        receivedMessage = []
        radio.read(receivedMessage, radio.getDynamicPayloadSize())
        print("Received: {}".format(receivedMessage))

        print("Translating our received Message into unicode characters...")
        string = ""

        for n in receivedMessage:
            if (n >= 32 and n <= 126):
                string += chr(n)
        print("Our received message decodes to: {}".format(string))

finally:
    print("Performing cleanup...")
    radio.end()
    GPIO.cleanup()
    print("Cleanup done...")
将RPi.GPIO导入为GPIO
导入时间
导入spidev
从libs.lib_nrf24导入nrf24
尝试:
GPIO.setmode(GPIO.BCM)
管道=[[0xE8,0xE8,0xF0,0xF0,0xE1],[0xF0,0xF0,0xF0,0xF0,0xE1]]
radio=NRF24(GPIO,spidev.spidev())
收音机,开始(0,25)
radio.setPayloadSize(32)
radio.setChannel(0x76)
无线电设置数据速率(NRF24.BR_250KBPS)
无线电设置电平(NRF24.PA_MIN)
radio.setAutoAck(真)
radio.enableDynamicPayloads()
radio.enableckPayload()
radio.openReadingPipe(1,管道[1])
radio.printDetails()
收音机
尽管如此:
而不是收音机。可用(0):
时间。睡眠(1/100)
receivedMessage=[]
radio.read(receivedMessage,radio.getDynamicPayloadSize())
打印(“接收:{}”。格式(接收消息))
打印(“将收到的邮件转换为unicode字符…”)
string=“”
对于receivedMessage中的n:

如果(n>=32和n,我目前无法提供帮助,但我想给你一些道具,让你说“数据是”。大多数人都不明白这一区别。