Caractères de terminaison dans NI-VISA

Aperçu

Différents bus basés sur des messages utilisent des caractères de terminaison pour indiquer la fin d'une transmission de message. Pour les types de ressources VISA qui correspondent à un protocole 488.2 complet (GPIB Instr, Instr VXI/GPIB-VXI, Instr USB et TCPIP Instr), il n'est généralement pas nécessaire d'utiliser des caractères de terminaison car l'implémentation du protocole dispose également d'un mécanisme natif pour spécifier la fin d'un message. Vous devez indiquer à VISA comment les messages sont terminés uniquement lorsque vous utilisez d'autres types de ressources VISA (Serial Instr, USB Raw et TCPIP Socket).

Les messages entrants et sortants peuvent avoir des caractères de terminaison. Les deux caractères de terminaison courants sont Retour à la ligne (les codes affichent '\n', ASCII décimal 10 ou hex 0x0A) et Retour chariot (les codes affichent '\r', ASCII décimal 13 ou hex 0x0D).

Quatre propriétés principales de NI-VISA concernent la terminaison. Deux des propriétés se trouvent sous Paramètres basés sur les messages et les deux autres sous Paramètres série. Les propriétés basées sur les messages sont Caractère de terminaison et Caractère de terminaison activé ; et les propriétés spécifiques à la série sont Modes de fin pour lectures et Modes de fin pour écritures. Ce White Paper va passer en revue chaque propriété et dispositions particulières s'y rattachant.

Contenu

Caractère de terminaison (TermChar)


Cette propriété accepte un entier de 8 bits non signé comme entrée. Par conséquent, à moins de connaître la valeur ASCII de votre caractère de terminaison, il est préférable de saisir la valeur pour définir la propriété, comme indiqué ci-dessus. Utilisez cette valeur de propriété comme caractère de terminaison pour les lectures et les écritures. La définition de cette valeur de propriété n'a aucune incidence sur son utilisation.

Bien que TermChar ne soit pas limité à la communication série, vous pouvez utiliser d'autres mécanismes de terminaison lors de la communication sur des bus avec un protocole 488.2 complet, comme indiqué dans l'introduction. Par exemple, lors de la communication via GPIB, la norme consiste à utiliser une ligne matérielle - EOI - pour la terminaison.

Remarque : VISA Configure Serial Port.vi définit cette propriété à l'aide du paramètre termination char qui est par défaut un retour à la ligne (0x0A = '\n' = LF).

Caractère de terminaison activé (TermChar En)




Si défini sur Vrai, cette propriété demande à VISA d'arrêter la lecture lorsque le caractère de terminaison est rencontré. Notez qu'il n'est pas limité à la série ; vous pouvez utiliser cette propriété pour terminer les lectures sur d'autres bus.

Important : Cette propriété est ignorée et ne renvoie pas d'erreur si le Mode de fin pour lectures (voir ci-dessous) est défini sur TermChar.

Cette propriété n'affecte pas le caractère de terminaison pour les écritures.

Remarque : VISA Configure Serial Port.vi définit cette propriété à l'aide du paramètre Enable Termination Char qui a par défaut la valeur Vrai.

Modes de fin pour lectures (ASRL End In)


Cette propriété spécifie la méthode utilisée pour mettre fin à une opération de lecture à partir du buffer du logiciel pour la communication série uniquement. Les valeurs valides sont :

Valeur
Description
None (0) La lecture ne s'arrête pas lorsque le caractère de terminaison est rencontré.
Last Bit (1) La lecture se termine dès réception d'un caractère dont le dernier bit est défini.
TermChar (2)
(Default)
La lecture s'arrête lorsque le caractère de terminaison est rencontré. Ceci est la valeur par défaut.


Important : Si la valeur est définie sur TermChar (2), la valeur de la propriété Caractère de terminaison activé est ignorée.

Si le nombre d'octets (spécifié par VISA Read) ou timeout (propriété VISA) est atteint, la lecture se termine quelle que soit la valeur définie pour cette propriété.

Cette propriété peut être désactivée en définissant la propriété Supprimer fin activé (Suppress End En) sur Vrai.

Remarque : VISA Configure Serial Port.vi définit cette propriété sur Aucun si l'entrée Enable Termination Char est définie sur F ; il la définit sur TermChar si l'entrée Enable Termination Char est définie sur V.

Modes de fin pour écriture (ASRL End Out)



Cette propriété spécifie la méthode utilisée pour terminer les opérations d'écriture. Les valeurs valides sont :

Valeur
Description
None (0)
(Default)
Aucun caractère de terminaison n'est ajouté à l'écriture.
Last Bit (1) L'écriture envoie tous les caractères à l'exception du dernier avec le bit le plus haut effacé, puis transmet le dernier caractère avec le bit le plus haut défini.
TermChar (2) La valeur de Caractère de terminaison est ajoutée à la fin de toutes les écritures.
Break (3) Une pause série est envoyée après chaque écriture. Une pause série est une série de valeurs d'espace continu souvent utilisées pour demander à un instrument d'arrêter l'opération en cours ou d'évacuer toute donnée figurant dans le buffer de sortie. Utilisez cette méthode avec prudence.


Des drivers d'instrument plus anciens peuvent ajouter un caractère de terminaison avant l'écriture VISA. En effet, les anciennes versions de VISA ne supportaient pas cette propriété et les utilisateurs doivent explicitement ajouter des caractères de terminaison. Ce n'est plus nécessaire car définir cette propriété le fait pour vous.

Vous pouvez désactiver cette propriété en définissant la propriété Envoyer fin activé (Send End En) sur Faux

Remarque : VISA Configure Serial Port.vine définit pas cette propriété. Vous devez la définir via un nœud de propriété, comme indiqué dans la figure ci-dessus.

Communication ASCII


Lorsque vous effectuez une communication ASCII, définissez vos propriétés de terminaison et d'autres paramètres de communication de bus au début de votre routine d'initialisation d'application ou de driver. Les paramètres de caractère de terminaison doivent correspondre à la configuration de votre instrument. N'oubliez pas que certains instruments ont des paramètres configurables. Consultez le manuel d'utilisation de votre instrument.

Recommandation : Pour les applications plus robustes pouvant gérer plusieurs bus, maintenez toujours synchronisés les modes de caractère de terminaison activés et de fin pour lectures (autrement dit, lorsque vous activez/désactivez l'un, définissez également l'autre).

Communication binaire


Lors d'une communication binaire, la lecture peut se terminer prématurément si une valeur de données binaires a la même représentation binaire que le caractère de terminaison. Par conséquent, désactivez le caractère de terminaison en définissant le caractère de terminaison activé sur faux et les modes de fin pour lectures sur None (0), comme indiqué ci-dessous. Vous devez utiliser une méthode différente pour terminer la lecture, telle qu'une ligne de matériel ou un nombre d'octets.


Remarque : Lorsque vous utilisez des types de ressources VISA correspondant à un protocole 488.2 complet (GPIB Instr, Instr VXI/GPIB-VXI, USB Instr et TCPIP Instr), vous n'avez généralement pas besoin d'activer les caractères de terminaison. La communication binaire est plus facile car vous n'avez pas à vous soucier de la désactivation préalable des paramètres de caractère de terminaison.

Instruments utilisant plusieurs caractères de terminaison


Certains instruments envoient plusieurs caractères de terminaison tels que le retour à la ligne de retour de chariot (les codes affichent '\r\n' ou ASCII hex 0x0D0A). Comme VISA n'autorise qu'un seul caractère de terminaison, vous devez trouver une autre solution. Tout d'abord, vérifiez si la séquence de terminaison de l'instrument est configurable. Sinon, vous pouvez configurer VISA pour qu'il se termine sur le dernier caractère et utiliser Balayer une chaîne pour analyser le ou les autres caractères du message. La figure suivante montre le code qui fonctionne pour les terminaisons '\r\n' ou '\n'


Remarque : Pour utiliser cette configuration, la propriété Style d'affichage doit être définie sur Codes à barre oblique inverse ('\'). Pour plus d'informations sur l'affichage des codes de barre oblique inverse ('\'), reportez-vous à la section Backslash ('\') Codes Display - LabVIEW Help.