www.mikrocontroller.net

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


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

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

print "Lade EasyLase-Library..."
mylib = CDLL("Easylase.dll")
print "Pruefe auf verfuegbare Geraete..."
nummer=mylib.EasyLaseGetCardNum()
print nummer
print "Pruefe Status..."
print mylib.EasyLaseGetStatus(nummer-1)
print "Sende DMX-Werte...."
#mylib.EasyLaseWriteDMX()
#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:
Lade EasyLase-Library...
Pruefe auf verfuegbare Geraete...
1
Pruefe Status...
Traceback (most recent call last):
  File "windll.py", line 9, in <module>
    print mylib.EasyLaseGetStatus(nummer-1)
WindowsError: exception: access violation reading 0x00000000

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


Kann mir jemand weiterhelfen?

Schonmal Danke :-)

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Fehler gefunden:

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

:-):-)

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
 pntr = pointer(frame) 

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

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

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

Danke schonmal,
              Benjamin

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.