UDF > Visa >


_viSetAttribute

Définit des attributs de VISA.

#include <Visa.au3>
_viSetAttribute ( $hSession, $iAttribute, $iValue )

Paramètres

$hSession Le descripteur de VISA (sring) ou le handle de la session VISA (integer).
Voir Remarques de _viExecCommand() pour plus d'info.
$iAttribute L'index de l'attribut qui doit être changé.
Les attributs sont définis dans la bibliothèque VISA.
Cette bibliothèque AutoIt définit uniquement une constante pour l'attribut TIMEOUT ($VI_ATTR_TMO_VALUE) et pour les attributs et les valeurs de l'interface série (voir Remarques), mais vous pouvez passer tout autre index valide (en tant qu'integer) si vous le souhaitez.
$iValue La valeur de l'attribut. Il doit être un entier et les valeurs possibles dépendent du type d'attribut et sont définis dans la documentation VISA.

Valeur de retour

Succès: Retourne 0.
Échec: Retourne -1 et définit @error <> 0 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 VISA ).

Remarques

Cette fonction, qui est appelée par _viSetTimeout, peut également être utilisée pour définir les autres attributs spécifiques de VISA. Lisez la documentation de VISA pour plus d'informations et une liste d'attributs de VISA et leurs valeurs correspondantes.

Ci-dessous, une liste des attributs et des valeurs actuellement pré-définies. N'oubliez pas que vous pouvez utiliser n'importe quel autre attribut/valeur valide en passant l'index entier correspondant (tel que défini dans le guide du programmeur de VISA) à cette fonction.

* Attribut: $VI_ATTR_TMO_VALUE -> Définit Timeout
* Valeurs:
    Un délai d'attente en millisecondes ou
    $VI_TMO_IMMEDIATE (ou 0) pour un "Retour immédiat"
    $VI_TMO_INFINITE (ou "INF") pour "Aucun délai d'expiration"

* Attribut: $VI_ATTR_ASRL_BAUD
* Valeurs:
    Toute vitesse de transmission valide (9600, 115200, etc..)

* Attribut: $VI_ATTR_ASRL_DATA_BITS
* Valeurs:
    De 5 à 8

* Attribut: $VI_ATTR_ASRL_PARITY
* Valeurs:
    $VI_ASRL_PAR_NONE
    $VI_ASRL_PAR_ODD
    $VI_ASRL_PAR_EVEN
    $VI_ASRL_PAR_MARK
    $VI_ASRL_PAR_SPACE

* Attribut: $VI_ATTR_ASRL_STOP_BITS
* Valeurs:
    $VI_ASRL_STOP_ONE
    $VI_ASRL_STOP_ONE5
    $VI_ASRL_STOP_TWO

* Attribut: $VI_ATTR_ASRL_FLOW_CNTRL
* Valeurs:
    $VI_ASRL_FLOW_NONE
    $VI_ASRL_FLOW_XON_XOFF
    $VI_ASRL_FLOW_RTS_CTS
    $VI_ASRL_FLOW_DTR_DSR

Comme pour toutes les fonctions VISA les bibliothèques Visa doivent être installées (vous pouvez vérifier si visa32.dll est dans {WINDOWS}\system32).
Vous êtes seulement besoin d'une carte GPIB (comme par exemple une carte PCI-GPIB National Instruments NI ou une carte GPIB Agilent 82350B PCI haute performance) si vous utilisez les fonctions en relation avec GPIB.

* Pour une description détaillée des descripteurs VISA les plus courants, regarder Remarques de l'aide de la fonction _viExecCommand().

En relation

_viClose, _viExecCommand, _viOpen, _viSetTimeout

Exemple

; - 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

; C'est la même chose que d'utiliser la fonction _viSetAttribute en premier:
MsgBox($MB_SYSTEMMODAL, "Étape 2", "_vOpen + timeout à l'aide de _viSetAttribute + requête GPIB")
Local $h_Instr = _viOpen(3)
; NOTE - Ceci est pareil que: _viSetTimeout($h_Instr, 10000)
_viSetAttribute($h_Instr, $VI_ATTR_TMO_VALUE, 10000) ; 10000 ms = 10 secs

$s_Answer = _viExecCommand($h_Instr, "*IDN?") ; Pas besoin de définir timeout maintenant
MsgBox($MB_SYSTEMMODAL, "Résultat de la requête GPIB", $s_Answer) ; Affiche la réponse

MsgBox($MB_SYSTEMMODAL, "Étape 3", "Ferme la connexion de l'instrument à l'aide de _viClose")
_viClose($h_Instr) ; Ferme la connexion de l'instrument