Seite 1 von 1

Korrekten Array Typ / Wert definieren

Verfasst: Sonntag 4. Dezember 2016, 17:39
von djevil
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

Re: Korrekten Array Typ / Wert definieren

Verfasst: Sonntag 4. Dezember 2016, 18:02
von Sirius3
@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.

Re: Korrekten Array Typ / Wert definieren

Verfasst: Sonntag 4. Dezember 2016, 18:12
von 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?

Re: Korrekten Array Typ / Wert definieren

Verfasst: Sonntag 4. Dezember 2016, 19:05
von djevil
Ach ich hatte ein

Code: Alles auswählen

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

MfG
djevil

Re: Korrekten Array Typ / Wert definieren

Verfasst: Sonntag 4. Dezember 2016, 19:08
von djevil
@BlackJack:

Ah, sorry, ich meinte Usb:

Code: Alles auswählen

device.read()
und 0 = None

Mfg djevil