Envoie une commande ou une requ�te � un Instrument ou un p�riph�rique via l'interface VISA (GPIB/TCP)
#include <Visa.au3>
_viExecCommand ( $hSession, $sCommand [, $iTimeoutMS = -1 [, $sMode = @LF]] )
$hSession |
Un descripteur de VISA (STRING) OU un handle de session VISA (INTEGER) Ce param�tre doit �tre une cha�ne ou un nombre entier (un handle): * STRING -> A VISA DESCRIPTOR est une cha�ne qui sp�cifie la ressource avec laquelle �tablir une session de communication. Un exemple de descripteur est "GPIB::20::0". Cette fonction prend en charge tous les descripteurs valides de visa, y compris GPIB, TCP, VXI et les instruments d'interface s�rie (ASRL). Une explication d�taill�e de descripteurs VISA est montr�e dans la section Remarques de cette fonction. Comme avec un raccourci, vous pouvez �galement utiliser une cha�ne de caract�res contenant le num�ro d'adresse (par exemple "20") d'un instrument GPIB au lieu de taper le descripteur complet (dans ce cas,"GPIB::20::0 �) * INTEGER -> un handle de session VISA est une valeur enti�re retourn�e par _viOpen(). Il est recommand� que d'utilisez � la place de _viOpen() et les handles de session VISA g�re � la place des descripteurs, si vous pr�voyez de communiquer r�p�titivement avec un instrument ou un appareil, sinon � chaque fois que vous contacterez l'instrument vous devrez ouvrir et fermer la liaison de communication. Une fois que vous aurez fini d'utiliser l'instrument, vous devez vous rappeler de fermer le lien avec la fonction _viClose(). |
$sCommand | Commande/requ�te � ex�cuter (par exemple "*IDN?" ou "SOURCE:POWER -20 dBM") Une requ�te DOIT contenir un point d'interrogation (?) Lorsque la commande est une requ�te, la fonction attendra automatiquement la r�ponse de l'instrument (ou jusqu'� ce que l'op�ration d�passe le d�lai TimeOut). |
$iTimeoutMS |
[optionnel] La dur�e hors d�lai de l'op�ration, en millisecondes. C'est surtout important pour les requ�tes. Si ce param�tre n'est pas sp�cifi�, le dernier d�lai d�fini sera utilis�. Si il n'a jamais �t� d�fini avant, le timeout par d�faut (qui d�pend de l'impl�mentation VISA ) sera utilis�. Un d�lai d'attente peut �galement �tre d�fini s�paremment avec la fonction _viSetTimeout(). Selon le type de bus (GPIB, TCP, etc...) le d�lai ne peut pas �tre d�fini avec la valeur exacte que vous souhaitez. En revanche, le d�lai d'attente valide le plus proche, plus grand que celui que vous avez demand�, sera utilis�. |
$sMode | [optionnel] Contr�le le mode dans lequel la VISA viPrintf est appel� lorsque $sCommand n'est pas une requ�te. La valeur par d�faut est @LF, ce qui signifie "attacher le mode @LF". Certains instruments et en particulier de nombreuses cartes GPIB ne respectent pas l'attribut de caract�re de terminaison dans les cas o� un terminateur @LF doit �tre ajout�. Comme c'est le cas le plus courant, par d�faut, le mode est d�fini sur @LF, qui ajoute @LF � la commande SCPI. Vous pouvez �galement d�finir ce mode sur @CR et @CRLF si votre carte utilise ces terminateurs. Si vous ne souhaitez pas utiliser de terminateur, d�finissez ce param�tre sur une cha�ne vide (""). De plus, certaines cartes prennent en charge l'ex�cution d'un "sprintf" sur la cha�ne SCPI avant de l'envoyer via l'interface VISA. Pour ceux qui le font, il est possible, en mettant ce param�tre � "str" de "prot�ger" l'interface VISA d'appliquer accidentellement une s�quence d'�chappement quand un �/� est trouv� dans la cha�ne de commande VISA. Cela n'est normalement PAS n�cessaire et ne doit �tre d�fini que si votre carte GPIB ou l'instrument le n�cessitent. |
Succ�s: | Retourne 0. |
�chec: | Retourne -1 si la dll VISA ne peut pas �tre ouverte ou une valeur non nulle repr�sentant le code d'erreur VISA (voir le guide du programmeur de VISA ) |
Succ�s: | Retourne la r�ponse de l'instrument � la requ�te |
�chec: | -1 Si la dll VISA ne peut pas �tre ouverte -3 Si le VISA DLL retourne un nombre inattendu de r�sultats ou une valeur non nulle repr�sentant le code d'erreur VISA (voir le guide du programmeur de VISA) |
* Les requ�tes VISA ne retournent que la 1�re ligne de la r�ponse du p�riph�rique.
Ce n'est pas un probl�me dans la plupart des cas, car la plupart des p�riph�riques r�pondront toujours avec une seule ligne.
* Ce qui suit est une description des descripteurs de visa le plus COMMUNS
Notez qu'il y a un peu plus de types. Pour plus d'informations veuillez vous r�f�rer au guide du programmeur VISA (disponible sur www.ni.com ).
Les segments optionnels sont indiqu�s entre crochets ([]).
Les segments obligatoires qui doivent �tre remplis sont d�sign�s par des crochets angulaires (<>).
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]
Le mot-cl� GPIB est utilis� pour les instruments GPIB.
Le mot-cl� TCPIP est utilis� pour les communication TCP/IP.
Le mot-cl� ASRL est utilis� pour les instruments s�rie.
Le mot-cl� PXI est utilis� pour les instruments PXI.
Le mot-cl� VXI est utilis� pour les instruments VXI via un controleur MXIbus.
Le mot-cl� GPIB-VXI est utilis� pour les instruments VXI via un contr�leur GPIB-VXI.
Les valeurs par d�faut pour les param�tres optionnels sont indiqu�s ci-dessous.
Segment Optionnel Valeur par d�faut
---------------------------------------
board 0
secondary address none
LAN device name inst0
Example Resource Strings:
--------------------------------------------------------------
GPIB::1::0::INSTR A GPIB device at primary address 1 and
secondary address 0 in GPIB interface 0.
GPIB2::INTFC Interface or raw resource for GPIB
interface 2.
TCPIP0::1.2.3.4::999::SOCKET Raw TCP/IP access to port 999
at the specified IP address.
ASRL1::INSTR A serial device attached to interface
ASRL1. VXI::MEMACC Board-level register
access to the VXI interface.
PXI::15::INSTR PXI device number 15 on bus 0.
VXI0::1::INSTR A VXI device at logical address 1 in VXI
interface VXI0.
GPIB-VXI::9::INSTR A VXI device at logical address 9 in a
GPIB-VXI controlled system.
_viClose, _viFindGpib, _viGpibBusReset, _viGTL, _viOpen, _viSetAttribute, _viSetTimeout
; - Cet exemple suppose que vous avez install� l'instrument � l'adresse GPIB 3 ; Si vous avez un instrument � une adresse diff�rente, changez "GPIB::3::0" en un descripteur correspondant. Faites de m�me pour l'appel � _viOpen. ; Il montre comment utiliser la fonction _viExecCommand en mode autonome et combin� avec _viOpen et _viClose. ; Il montre �galement la fonction _viGTL #include <MsgBoxConstants.au3> #include <Visa.au3> Local $h_Session = 0 ; Interroge l'ID de l'instrument � l'address GPIB 3 MsgBox($MB_SYSTEMMODAL, "�tape 1", "Simple requ�te GPIB � l'aide d'un descripteur VISA") Local $s_Answer = _viExecCommand("GPIB::3::0", "*IDN?", 10000) ; 10 secs timeout MsgBox($MB_SYSTEMMODAL, "R�sultat de la requ�te GPIB", $s_Answer) ; Affiche la r�ponse MsgBox($MB_SYSTEMMODAL, "�tape 2", "Va sur l'ordinateur LOCAL � l'aide d'un descripteur VISA") _viGTL("GPIB::1::0") ; Va sur un local (quitte le mode contr�le distant) MsgBox($MB_SYSTEMMODAL, "�tape 3", "Simple requ�te GPIB � l'aide d'un raccourci d'adresse VISA") $s_Answer = _viExecCommand("1", "*IDN?") ; L'adresse doit �tre une cha�ne MsgBox($MB_SYSTEMMODAL, "R�sultat de la requ�te GPIB", $s_Answer) ; Affiche la r�ponse MsgBox($MB_SYSTEMMODAL, "Info", "Maintenant, utilise _viOpen et _viClose") MsgBox($MB_SYSTEMMODAL, "�tape 4", "Ouvre la connexion de l'instrument avec _viOpen") Local $h_Instr = _viOpen(3) MsgBox($MB_SYSTEMMODAL, "Handle de l'Instrument obtenu", "$h_Instr = " & $h_Instr) ; Affiche le handle de la session ; Interroge l'instrument MsgBox($MB_SYSTEMMODAL, "�tape 5", "Interroge l'instrument � l'aide du handle de l'instrument VISA ") $s_Answer = _viExecCommand($h_Instr, "*IDN?") ; $h_Instr n'est pas une cha�ne! MsgBox($MB_SYSTEMMODAL, "R�sultats de la requ�te GPIB", $s_Answer) ; Affiche la r�ponse ; Query again. There is no need to OPEN the link again MsgBox($MB_SYSTEMMODAL, "�tape 6", "Interroge de nouveau. Inutile d'ouvrir le lien de nouveau") $s_Answer = _viExecCommand($h_Instr, "*IDN?") MsgBox($MB_SYSTEMMODAL, "R�sultats de la requ�te GPIB", $s_Answer) ; Affiche la r�ponse MsgBox($MB_SYSTEMMODAL, "�tape 7", "Va sur l'ordinateur LOCAL � l'aide du handle de l'instrument VISA") _viGTL($h_Instr) ; Va sur le local (ceci est optionnel) MsgBox($MB_SYSTEMMODAL, "�tape 8", "Ferme la connexion de l'instrument � l'aide de _viClose") _viClose($h_Instr) ; Ferme la connexion de l'instrument