Korrekten Array Typ / Wert definieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Hallo, ich habe hier diesen kleinen Code:

Code: Alles auswählen

    ### read(bEndpointAddress, size_or_buffer, timeout ms )
    ## size_or_buffer = wMaxPacketSize  =  0x20 =  1x 32 bytes (it *must* be an object of the type array)
    data = dev.read(0x81, 36, 0) #len=29 ???
Die zu lesende Länge ist wohl 29 bytes, 32 sind möglich,
mit 36 "scheint" es stabiler zu laufen.

Es kommt jedenfalls zu:
File "min.py", line 80, in <module>
print("Key: ", data[26])
IndexError: array index out of range
Habe noch folgendes getestet:
#print("Length: ", len(data))
print("-------------")
#"".join(map(chr, data))
#data.tostring()
#print(data)
print("Key: ", data[26])
Funktioniern tut es allerdings prinzipiell, aber der genaue Typ ist wohl nicht richtig?

MfG
djevil
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@djevil: »read« liest nur so viele Bytes, wie gerade gepuffert sind. Wenn Du wirklich 32 Bytes erwartest, solltest Du so lange lesen, bis exakt diese 32 Bytes da sind.
BlackJack

@djevil: Ich verstehe die Frage jetzt nicht so wirklich. Und zu Sirius3's Antwort: Von welchem `read()` reden wir hier gerade? Ich habe die Vermutung er meint `file.read()`, und den Verdacht Du meinst `usb.Device.read()`. So etwas musst Du dazu sagen. Steht die letzte 0 tatsächlich für eine Zeitüberschreitung nach 0 Millisekunden? Was passiert wenn Du dieses Argument einfach mal weg lässt?
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Ach ich hatte ein

Code: Alles auswählen

time.sleep()
an einer ungünstigen Stelle...jetzt gehts!

MfG
djevil
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

@BlackJack:

Ah, sorry, ich meinte Usb:

Code: Alles auswählen

device.read()
und 0 = None

Mfg djevil
Antworten