Habe VISA32.dll in der Version 4.0 von National Instruments geladen. Leider funktioniert der dll-Aufruf _viExecCommand nicht. Das Öffnen mit
_viOpen("GPIB::7::0")
klappt. Der angeschlossen Signalgenerator geht in den Remote-Zustand. Mit dem nächsten Befehl
$s_answer = _viExecCommand(7,"RF 123.456MHZ",1000)
springt das Programm in die eingebundene Visa.au3. Dort wird die Funktion _viExecCommand ausgeführt, die ihrerseits _viPrintf aufruft. Dort schließlich wird mit
$a_results = DllCall("visa32.dll", "int", "viPrintf", "int", $h_session, "str", $s_command)
die Dll aufgerufen. Der Befehl wird schließlich vom angeschlossenen Gerät ausgeführt, der Generator setzt die Frequenz auf 123.456 MHz. Allerdings kehrt das Programm nicht wieder aus der DLL zurück, eine Fehlermeldung gibt es nicht. Wenn ich eine kompilierte Version erstelle, so erhalte ich jedoch die Meldung:
$a_results = DllCall("visa32.dll", "int", "viPrintf", "int", $h_session, "str", $s_command)
Error: AutoIt has detected the stack has become corrupt. Stack corruption typically occurs when either the wrong calling convention is used or when the function is called with the wrong number of arguments.
Wer weiß Rat? Wo könnte ich ggf. die dll-Dokumentation bekommen? Bei NI habe ich sie nicht finden können. Ich freue mich über jeden Tipp!