# Funktionsreferenz

_viExecCommand

Sendet einen Befehl/Abfrage an ein Instrument/Gerät durch den VISA Anschluss (GPIB / TCP)

#include <Visa.au3>
_viExecCommand($h_session, $s_command, $i_timeout_ms = -1)

Parameter

$h_session | Ein VISA descriptor (Zeichenfolge) oder ein VISA session handle (Ganzzahl). Ein "VISA DESCRIPTOR" ist eine ZEICHENFOLGE, die die Ressource spezifiert, mit der die Kommunikations-Sitzung etabliert werden soll. Ein Beispiel für einen VISA Descriptor ist "GPIB::20::0". Die Funktion unterstützt alle gültigen VISA Descriptoren, inklusive GPIB, TCP, VXI und serieller Interface Instrumente (ASRL). Eine ausführliche Erläuterung von VISA Descriptoren ist weiter unten unter "Bemerkungen" zu finden. Als Kurzangabe kann auch eine Zeichenfolge angegeben werden, die nur die Adressnummer eines GPIB Instruments enthält (z.B. "20" andstelle "GPIB::20::0"). Ein "VISA session handle" ist eine GANZZAHL, die von _viOpen zurückgegen wird. Es wird empfohlen, mit _viOpen und VISA session handles zu arbeiten, wenn geplant ist, wiederholt mit einem Instrument/Gerät zu kommunizieren, da ansonsten, immer wenn das Instrument angesprochen wird, ein unnötiger Overhead für das Öffnen und Schließen der Kommunikations-Verbindung aufgebaut wird. Wenn die Verbindung nicht mehr benötigt wird, muss Sie mit _viClose geschlossen werden.
$s_command | Befehl/Abfrage zum Ausführen (z.B. "*IDN?" or "SOURCE:POWER -20 dBM"). Eine Abfrage muss ein Fragezeichen enthalten. Wenn der Befehl eine Abfrage ist wartet die Funktion automatisch auf die Antwort des Instrumentes (immer oder bis zur Zeitabschaltung [times out] der Operation). $i_timeout_ms Optional: Die Zeitabschaltung der Operation in Millisekunden. Dieser optionale Parameter ist vor allem für Abfragen wichtig. Wenn keine Zeitabschaltung angegeben wurde, wird die zuletzt gesetzte genommen. Wurde noch nie eine zuvor gesetzt, wird die Vorgabe Zeitabschaltung (abhängig von der VISA Implementation) genommen. Zeitabschaltungen können auch separat mit der _viSetTimeout Funktion gesetzt werden. Abhängig von der Anschlussart (GPIB, TCP, etc) wird die angegebene Zeitabschaltung eventuell auf den nachsthöheren Wert gerundet.

Bemerkungen

* Die VISA Abfragen gibt nur die 1. Zeile der Geräte Antwort zurück.
Das ist in den meisten Fällen kein Problem, da die meisten Gerätetreiber immer
mit in einer Zeile antworten.
* Folgend eine Beschreibung der bekanntesten VISA DESCRIPTORS.
Es sind nicht alle Typen aufgelistet. Mehr Informationen sind
im VISA programmer's guide (available at www.ni.com) zu finden.
Optionale Elemente werden in eckigen Klammern ([]) angegeben.
Erforderliche Elemente, die ausgefüllt werden müssen, werden in
(<>) angezeigt.
Interface Syntax
------------------------------------------------------------
GPIB INSTR GPIB[board]::primary address
[::secondary address] [::INSTR]
GPIB INTFC GPIB[board]::INTFC
TCPIP SOCKET TCPIP[board]::host address::port::SOCKET
Serial INSTR ASRL[board][::INSTR]
PXI INSTR PXI[board]::device[::function][::INSTR]
VXI INSTR VXI[board]::VXI logical address[::INSTR]
GPIB-VXI INSTR GPIB-VXI[board]::VXI logical address[::INSTR]
TCPIP INSTR TCPIP[board]::host address[::LAN device name]
[::INSTR]
Das GPIB Schlüsselwort wird benutzt für GPIB Instrumente.
Das TCPIP Schlüsselwort wird benutzt für TCP/IP Kommunikation.
Das ASRL Schlüsselwort wird benutzt für serielle Instrumente.
Das PXI Schlüsselwort wird benutzt für PXI Instrumente.
Das VXI Schlüsselwort wird benutzt für VXI Instrumente via "eiDasr embedded"
oder MXIbus Controller.
Das GPIB-VXI Schlüsselwort wird benutzt für VXI Instrumente via einen GPIB-VXI
Controller.
Die Vorgabe Werte für optionale Parameter werden nachfolgend gezeigt.
Optionales Element Vorgabe Wert
---------------------------------------
board 0
secondary address none
LAN device name inst0
Examplee für Resource Zeichenfolgen:
--------------------------------------------------------------
GPIB::1::0::INSTR Ein GPIB Gerät an erster Adresse 1 und
zweiter Adresse 0 in GPIB Interface 0.
GPIB2::INTFC Interface oder Resource für GPIB
Interface 2.
TCPIP0::1.2.3.4::999::SOCKET TCP/IP Zugang via Port 999
an der spezifizierten IP Adresse.
ASRL1::INSTR Ein serieller Ausgang verbunden mit Interface
ASRL1. VXI::MEMACC Board-level Register
Zugang zu VXI interface.
PXI::15::INSTR PXI Device Nummer 15 an Bus 0.
VXI0::1::INSTR Ein VXI Device an logischer Adresse 1 in VXI
Interface VXI0.
GPIB-VXI::9::INSTR Ein VXI Device an logischer Adresse 9 in einem
GPIB-VXI controlled system.

Siehe auch

_viFindGpib, _viOpen, _viClose, _viSetTimeout, _viGTL, _viGpibBusReset

Beispiel

;- This assumes that you have instrument set to GPIB address 3
; If you have an instrument in a different address change "GPIB::3::0" to the
; corresponding descriptor. Do the same for the call to _viOpen
; It shows how to use the _viExecCommand function in stand alone mode and combined
; with _viOpen and _viClose.
; It also shows the _viGTL function
#include <Visa.au3>
Dim $h_session = 0
; Query the ID of the instrument in GPIB address 3
MsgBox(0,"Step 1","Simple GPIB query using a VISA Descriptor")
Dim $s_answer = _viExecCommand("GPIB::3::0","*IDN?",10000) ; 10 secs timeout
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
MsgBox(0,"Step 2","Go to LOCAL using VISA Descriptor")
_viGTL("GPIB::1::0") ; Go to local (exit remote control mode)
MsgBox(0,"Step 3","Simple GPIB query using a VISA address shortcut")
$s_answer = _viExecCommand("1","*IDN?") ; The address MUST BE A STRING
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
MsgBox(0,"Info","Now let's use _viOpen and _viClose")
MsgBox(0,"Step 4","Open the instrument connection with _viOpen")
Dim $h_instr = _viOpen(3)
MsgBox(0,"Instrument Handle obtained", "$h_instr = " & $h_instr) ; Show the Session Handle
; Query the instrument
MsgBox(0,"Step 5","Query the instrument using the VISA instrument handle")
$s_answer = _viExecCommand($h_instr,"*IDN?") ; $h_instr is NOT A STRING now!
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
; Query again. There is no need to OPEN the link again
MsgBox(0,"Step 6","Query again. There is no need to OPEN the link again")
$s_answer = _viExecCommand($h_instr,"*IDN?")
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
MsgBox(0,"Step 7","Go to LOCAL using VISA instrument handle")
_viGTL($h_instr); Go to local (this is optional)
MsgBox(0,"Step 8","Close the Instrument connection using _viClose")
_viClose($h_instr) ; Close the instrument connection