Python Ctypes "Access Violation Reading"

Gast #1746891
Lesenswert?

Hallo Zusammen,

ich habe ein großes Problem: folgender Code Soll eine DLL in Python 
einbinden und dann deren Funktionen verwenden.
1
from ctypes import *
2

3
print "Lade EasyLase-Library..."
4
mylib = CDLL("Easylase.dll")
5
print "Pruefe auf verfuegbare Geraete..."
6
nummer=mylib.EasyLaseGetCardNum()
7
print nummer
8
print "Pruefe Status..."
9
print mylib.EasyLaseGetStatus(nummer-1)
10
print "Sende DMX-Werte...."
11
#mylib.EasyLaseWriteDMX()
12
#mylib.EasyLaseDMXOut(0, arr, 0, 12)

Leider klappt das nicht so wie es soll. Zwar wird in nummer die richtige 
Box-Anzahl eingetragen (1) doch schon der nächste Aufruf spukt einen 
Fehler aus:
1
Lade EasyLase-Library...
2
Pruefe auf verfuegbare Geraete...
3
1
4
Pruefe Status...
5
Traceback (most recent call last):
6
  File "windll.py", line 9, in <module>
7
    print mylib.EasyLaseGetStatus(nummer-1)
8
WindowsError: exception: access violation reading 0x00000000

aus der DLL-Doku:
1
Function EasyLaseGetStatus(CardNumber:integer) :integer
2
Ermitteln des Kartenstatus hinsichtlich Framepuffer und USB-Funktionalität.
3
Rückgabewert: 0 = USB-Error (genauer Errorcode in EasyLaseGetLastError)
4
1 = Ready (Frames können geladen werden)
5
2 = Busy (Beide Framepuffer voll, Empfangsdaten werden verworfen)


Kann mir jemand weiterhelfen?

Schonmal Danke :-)
Gast #1840283
Lesenswert?

Hallo Tom,
ich versuche gerade, ein EasyLase-Geraet ueber Python anzusteuern, und 
habe Probleme mit dem Pointer. Genauer, ich generiere mit ein frame mit 
zwei Punkten, hole mir den pointer ueber
1
 pntr = pointer(frame)

und will dann die Daten des frames ueber
1
 ok = elib.EasyLaseWriteFrame(0,pntr,16,2000)

an das Geraet schicken. Aber ich krieg' immer:
1
 exception: access violoation reading 0x00000000

also hab' ich mir scheinbar einen Null-pointer gebaut. Wie hast du das 
geloest?

Danke schonmal,
              Benjamin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren