Zugriff auf ein laufendes Programm?
-
Hallo zusammen,
ich programmiere zur Zeit eine Art Interface für Matlab um damit eine 16Bit ISA Messkarte zur Druckindizierung an Verbrennungsmotoren in Matlab ansprechen zu können. Seitens des Kartenherstellers habe ich nur die 32bit Treiberdll für die Messkarte. Prinzipiell funktionieren tut auch alles... aber der Teufel steckt im Detail. Noch kurz was zu Matlab:
In Matlab kann man ein MFile (so´ne Art Batchfile) schreiben welches einen eine Kette von matlabspezifischen Befehlen ausführt. Nun kann man eine DLL schreiben die eine spezielle Funktion Namesvoid mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
enthält. Auf diese Funktion kann man direkt aus dem MFile zugreifen indem man einfach den Namen der DLL (mit beliebigen Parametern) wie eine Funktion aufruft.
Ich rufe also aus dem MFile diese DLL mit der mexFunction. In dieser Mexfunction möchte ich dann die Gerätetreiberdll für die Messkarte aufrufen. Nur dabei produziert Matlab einen Fehler. Wenn ich aber selber eine DLL im CPPBuilder6 schreibe die den Treiber aufruft und in der DLL mit der mexFuntion nur meine selbstgeschriebene DLL aufrufe geht alles.... warum ?
Nun habe ich mir gedacht es wäre evtl. sinnvoll eine EXE zu schreiben die ständig läuft und die zwei Messkarten im Rechner parametrieren und steuern kann. Ich würde dann aus Matlab (also der mexFunction) heraus gern auf diese EXE zugreifen und ihr sagen was sie machen soll... in meinem Verständnis wäre das sozusagen eine Art DLL ständig im Speicher steht und nicht bei jedem Aufruf aus Matlab heraus neu geladen werden muss... denn dann muss ich jedes mal die Karten neu parametrieren.
Weis jemand wie ich auf eine laufende EXE zugreifen kann und in ihr existierende Funktionen (mit Parameter Hin- und rücktransfer) aufrufen kann? Läuft das auf die OpenProcess Fkt. der API hinaus oder geht das anders?
Danke schonmal,
Grüße Sebastian