Ondersteuning > Programmeren

IndexError:list index out of range.

(1/1)

henkoegema:
Van een Arduino krijg ik volgende data binnen via de serial USB  in  een python programma


['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']


Python programma:

*****************************************************************
import serial
import time

arduinoData = serial.Serial('/dev/ttyUSB1', 115200)
time.sleep(1)

while True:
    while(not(arduinoData.inWaiting())):
        pass
    dataPacket = arduinoData.readline()     #formaat dataPacket:  b'255,255,255\r\n'
    dataPacket = str(dataPacket,'UTF-8')     #formaat dataPacket:  255,255,255
    splitPacket = dataPacket.split(',')             #formaat splitPacket: ['255', '255', '255\r\n']
    x = splitPacket[0]
    y = splitPacket[1]
    z = splitPacket[2]
    print(x)    <---------  :)               # 255 als resultaat
    print(y)    <---------  :(              # IndexError: list index out of range
    print(z)   <---------  :(               # IndexError: list index out of range
   
*****************************************************************

Kan splitPacket[1] en splitPacket[2] niet printen. ???
   

henkoegema:

--- Citaat van: henkoegema op 2021/08/28, 15:35:43 ---Van een Arduino krijg ik volgende data binnen via de serial USB  in  een python programma


['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']
['255', '255', '255\r\n']


Python programma:

*****************************************************************
import serial
import time

arduinoData = serial.Serial('/dev/ttyUSB1', 115200)
time.sleep(1)

while True:
    while(not(arduinoData.inWaiting())):
        pass
    dataPacket = arduinoData.readline()     #formaat dataPacket:  b'255,255,255\r\n'
    dataPacket = str(dataPacket,'UTF-8')     #formaat dataPacket:  255,255,255
    splitPacket = dataPacket.split(',')             #formaat splitPacket: ['255', '255', '255\r\n']
    x = splitPacket[0]
    y = splitPacket[1]
    z = splitPacket[2]
    print(x)    <---------  :)               # 255 als resultaat
    print(y)    <---------  :(              # IndexError: list index out of range
    print(z)   <---------  :(               # IndexError: list index out of range
   
*****************************************************************

Kan splitPacket[1] en splitPacket[2] niet printen. ???
   

--- Einde van citaat ---

De fout onstaal al bij:

y = splitPacket[1]
z = splitPacket[2]

henkoegema:
Na 2 dagen zoeken, eindelijk de fout gevonden,  O0

Deze lijn (in de Arduino) was de oorzaak:

--- Code: ---if (RGB_sensor.init())
  {
    Serial.println("Sensor Initialization Successful\n\r");
  }

--- Einde van code ---

Dit is natuurlijk geen getal. (int of float)   ;)

Na deze verandering:

--- Code: ---if (RGB_sensor.init())
  {
    //Serial.println("Sensor Initialization Successful\n\r");
  }

--- Einde van code ---
werkte het wel.

Navigatie

[0] Berichtenindex

Naar de volledige versie