so jetzt habe ich mich auch mal angemeldet. Hab sonst immer die nötigen Antworten im Forum gefunden, so dass ich selber nie einen Eintrag schreiben musste. Leider habe ich diesmal nichts gefunden. Vorab, ich bin in Python totaler Anfänger und in C kann ich wohl nur die Grundlagen.
So also zu meinem Problem:
ich soll ein Logikanalysator mittels DLL ansprechen.
Beispielprogramme in C++, DLL und Manual findet man unter
http://www.acute.com.tw/Software/dll_sc/la_vc.zip
Einige Sachen wie Initalisieren habe ich bereits zum laufen gebracht. Nur das "Starte Messung" und "Empfange Daten" habe ich noch nicht zum laufen gebracht.
Das Problem, was ich habe sind die Pointer, Strukturen und Arrays (Denke ich).
Die DLL habe ich wie folgt eingebunden
Code: Alles auswählen
import ctypes
windll = ctypes.windll.LoadLibrary("LaRun.dll")
Code: Alles auswählen
#Habe ich zum laufen gebracht:
#BOOL ulaInit();
#BOOL ulaShutdown();
#BOOL ulaThreshold( int iPod, int iMilliVolt );
#INT ulaGetHwInfo( UINT nIndex );
#BOOL ulaSetHwInfo( UINT nIndex, int iValue );
#läuft noch nicht
#BOOL ulaGetModelName( LPSTR szModel, int iSize );
#BOOL ulaCapture( LPTRIG lptr, int *lpi, LPBYTE lpb );
#BOOL ulaRead( LPBYTE lpb, int iFlag );
Code: Alles auswählen
def ulaInit():
return windll.ulaInit()
...
#bei den weiß ich nicht ob ich das richtig gemacht habe, wegen Pointern etc.
#Start capturing signals data.
def ulaCapture(lptr, lpi, lpb):
return windll.ulaCapture(lptr, lpi, lpb)
#Read back the LA captured data.
def ulaRead(lpb, iFlag):
return windll.ulaRead(lpb, iFlag)
Bei der ulaCapture muss man ein Struct übergeben, was ich wie folgt gelöst habe
(ob das richtig ist?)
C-Code
Code: Alles auswählen
typedef struct _TRIG
{
int iFlag;
int iCh;
...
int *lpiCont;
BYTE *lpbTrigData;
} TRIG, FAR *LPTRIG;
habe ich so gelöst:
Code: Alles auswählen
class TRIG:
pass
m_tr = TRIG()
#Variable Wert zuweisen, damit die existiert
m_tr.iFlag = 2
...
ist das denn bis dahin richtig?
Mit den Struct und den Pointern?
Gibt es eigentlich eine übersetzung für #define?
Wie ist das mit den Arrays?
Als nächstes muss ich die LaStream.cpp und die LaStream.h übersetzen, was ich noch nicht so genau weiß, wie ich das machen soll.
Aber erst mal so weit.
Könnt Ihr mir da vielleicht ein Tipp geben?
hilfen mir eigentlich die Befehle
# Extension
# Cython
?
Hier dochnochmal was - Aufruf der Funktionen in C:
Code: Alles auswählen
int m_iTrCont[16]; // For Trigger Parameter
BYTE m_bTrData[64*16]; // For Trigger Parameter
TRIG m_tr; // Trigger Structure
ulaCapture( &m_tr, m_iTrCont, m_bTrData );
ulaRead( m_lpbWave, -1 );
Ich hoffe, das ist jetzt nicht zu wirr, was ich geschrieben haben und man versteht es trotzdem.
Vielen Dank schon mal für eure Hilfe