Forum: PC-Programmierung Python Ctypes "Access Violation Reading"


von Tom (Gast)


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 :-)

von Tom (Gast)


Lesenswert?

Habe den Fehler gefunden:

Die Hersteller-DLL ist müll. Mit einer Betaversion (jmlaser.dll) klappts 
problemlos.

:-):-)

von Benjamin (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.