Python Raspberry Pi上的列表索引超出范围

Python Raspberry Pi上的列表索引超出范围,python,raspberry-pi3,Python,Raspberry Pi3,当我试图让我的NRF24L01模块在Raspberry Pi 3b+上工作时,出现“列表索引超出范围”错误。代码是用python编写的,我似乎没有注意到错误 import RPi.GPIO as GPIO from lib_nrf24 import NRF24 import time import spidev GPIO.setmode(GPIO.BCM) pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1], [0xF0, 0xF0, 0xF0, 0xF0, 0x

当我试图让我的NRF24L01模块在Raspberry Pi 3b+上工作时,出现“列表索引超出范围”错误。代码是用python编写的,我似乎没有注意到错误

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

GPIO.setmode(GPIO.BCM)

pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1], [0xF0, 0xF0, 0xF0, 0xF0, 0xE1]]

radio = NRF24 (GPIO, spidev.SpiDev())
radio.begin(0, 17)

radio.setPayloadSize (32)
radio.setChannel(0x76)
radio.setDataRate(NRF24.BR_1MBPS)
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)

    a = []
    b = []
    receivedMessage = []
    radio.read(receivedMessage, radio.getDynamicPayloadSize())
    a = receivedMessage[0]
    b = receivedMessage[1]
    print( "Temperature:" , a, "Humidity:" , b )

错误出现在
a=receivedMessage[0]
b=receivedMessage[1]
行。 希望能有一些新的外观和建议来解决这个问题。 回溯:

Traceback (most recent call last):
  File "/home/pi/Desktop/NRF24L01/VEIIIK.py", line 34, in <module>
    a = receivedMessage[0]
IndexError: list index out of range
当行
打印(receivedMessage)
输出
[]

时,为什么不执行以下操作:

if(receivedMessage):
    a = receivedMessage[0]
    b = receivedMessage[1]
    print( "Temperature:" , a, "Humidity:" , b )

这可能会解决问题。

我想答案就在
lib_nrf24
文档中的某个地方;
radio.read
应该返回您检查的值,或者它将值插入
receivedMessage
参数。如果是后者,您应该检查是否实际添加了值,而不是盲目地读取空列表。什么错误消息?您从该错误中了解到了什么,您做了什么来解决它?从该错误中,我了解到
receivedMessage
列表为空,因此发送的列表超出了错误范围。到目前为止,我试着从另一个人那里下载一个修改过的库,然后改用它。它没有解决问题。欢迎使用堆栈溢出!您需要提供一个包含完整错误消息的回溯。但是你的理解是对的,这个列表可能是空的。对于一些基本调试,请尝试打印(radio.read(receivedMessage,radio.getDynamicPayloadSize())和
print(receivedMessage)
@wjandrea使用
radio.read
receivedMessage
的回溯和打印更新了帖子,这确实修复了错误。非常感谢:)它解决了这个问题,因为在某些情况下,程序试图从空变量(不存在)读取数据。若要修复此问题,请首先检查它是否存在,然后读取。若变量为null,请尝试访问它
数据[0]
您会得到
索引超出范围的错误。
if(receivedMessage):
    a = receivedMessage[0]
    b = receivedMessage[1]
    print( "Temperature:" , a, "Humidity:" , b )