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

问题描述 投票:0回答:1

尝试使我的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

更新使用print(radio.read(receivedMessage, radio.getDynamicPayloadSize()))行给出输出:

0
1
1
1
1
1
1
1
1
1
1

同时行print(receivedMessage)输出[]

python raspberry-pi3
1个回答
0
投票

你为什么不做:

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

这可能会解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.