|
|
Aufrufen einer Funktion aus .dll mit Übergabe von Pointern |
|
Ausmilkel |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 11.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.04.2011, 21:09
Titel: Aufrufen einer Funktion aus .dll mit Übergabe von Pointern
|
 |
|
 |
|
Hallo,
ich versuche ein Oszilloskop mit Matlab anzusteuern. Ich habe dazu eine .dll und ein .h file bekommen. Eine einfache Applikation die ich unter visual c++ starten kann ist auch dabei. Diese "öffnet" das Oszi, welches sich dabei einschaltet.
Dies habe ich jetzt in Matlab auch versucht mit loadlibrary, calllib usw.
Folgende Funktion wird zum Öffnen angewendet:
PICO_STATUS ps6000OpenUnit
(
short * handle,
char * serial
)
Zitat: |
This function opens a PicoScope 6000 Series scope attached to the computer. The maximum number of units that can be opened depends on the operating system, the kernel driver and the computer. Applicability All modes
Arguments
* handle, on exit, the result of the attempt to open a scope:
-1: if the scope fails to open
0: if no scope is found
> 0: a number that uniquely identifies the scope
If a valid handle is returned, it must be used in all subsequent calls
to API functions to identify this scope.
*serial, on entry, a null-terminated string containing the serial
number of the scope to be opened. If serial is NULL then the
function opens the first scope found; otherwise, it tries to open the
scope that matches the string.
|
Hier der Code
Ich übergebe wie oben im Zitat beschrieben, als serial den Wert 0. Damit wird das erste gefundene Oszi eingeschalten.
Dann sollte sich eigentlich das Oszi einschalten. Leider geht das nicht. WIe gesagt, ich habe die Demoapplikation auch getestet (schrittweise in visual c++) . Dort wurde auch die Funktion ps6000OpenUnit (short *handle, char *serial) aufgerufen und dann ging das Oszi an.
Matlab bringt mir keine Fehlermeldung. auch der Rückgabewert der Funktion ist >0 (siehe oben im Zitat)
Kann mir jemand helfen?
Viele Grüße,
Robert
|
|
|
|
|
Ausmilkel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 11.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.04.2011, 08:33
Titel:
|
 |
eine kleine Ergänzung:
ich habe über visual c++ die Seriennummer vom Oszi rausbekommen.
Die habe ich dann direkt der Funktion übergeben:
(Wieso brauche ich für den String keinen pointer?)
Jetzt startet das Oszi. Wie kann ich denn aber NULL ( definiert in C als #define NULL 0 ) übergeben. Mit folgender Initialisierung von serial_nr
funktioniert es nicht.
Damit auch nicht:
Hier das Beispiel wie das Oszi in der C Umgebung gestartet wird:
NULL bedeutet, dass das erste Oszi was gefunden wird auch gestartet wird.
Könnt ihr mir da bitte helfen?
Viele Grüße,
Robert
|
|
|
helferlein |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.08.2012, 14:05
Titel:
|
 |
hast du NULL, wie in der Matlab Hilfe beschrieben, schon mal mit [] übergeben?
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|