Communiquer avec des instruments implique la transmission de données à ces instruments et la récupération des données provenant de ces instruments. Vous avez rarement besoin de formater les données transmises en direction ou en provenance d'un instrument lorsque vous utilisez des drivers d'instruments, car le driver d'instruments se charge du formatage pour vous. Toutefois, vous devez généralement formater les données lorsque vous écrivez des VIs pour communiquer avec les instruments.

Lorsque vous communiquez avec un instrument qui transmet des messages, vous devez formater et créer les chaînes de commande correctes afin que l'instrument réalise l'opération appropriée ou renvoie une réponse.

Il n'existe pas de normes pour la communication basée registre. Chaque périphérique fonctionnant différemment, la documentation sur l'instrument est la meilleure source d'informations pour apprendre à programmer le périphérique.

Typiquement, une chaîne de commande, ou interrogation, est la combinaison de texte et de valeurs numériques. Certains instruments exigent des chaînes de commande ne contenant que du texte, ce qui vous oblige à convertir les valeurs numériques en texte et à les ajouter à la chaîne de commande. De la même manière, pour utiliser les données qu'un instrument renvoie dans LabVIEW, vous devez convertir les données dans un format qu'un VI, une fonction ou un indicateur peut accepter.

(Windows) Vous pouvez utiliser l'Assistant d'E/S d'instruments pour envoyer des requêtes à un instrument et pour formater les données qu'un instrument renvoie. Placez le VI Express Assistant d'E/S d’instruments sur le diagramme pour accéder à cet assistant.

Utilisez la fonction Formater en chaîne pour construire des chaînes de commande à envoyer à un instrument ou pour ajouter d'autres chaînes ou d'autres types de données numériques à une chaîne initiale.

Formatage de données récupérées d'un instrument

Tout comme les chaînes de commande que vous envoyez à un instrument contiennent des chaînes de début et des chaînes de fin, la plupart des instruments renvoient des données avec des informations en tête et des informations en queue. Les informations de début contiennent généralement des informations comme le nombre de points de données renvoyées ou les paramètres de l'instrument. Les informations en queue contiennent souvent des unités ou d'autres paramètres d'instrument à la fin de la chaîne de données. La documentation qui accompagne l'instrument décrit normalement quelles informations de début ou de fin on peut attendre de chaque transfert de données. Vous devez supprimer les informations de début et de fin avant de pouvoir afficher ou analyser les données renvoyées dans LabVIEW.

Vous pouvez utiliser les fonctions Sous-ensemble d'une chaîne pour analyser les informations de début et de fin d'une chaîne et les afficher sous forme d'indicateurs. Vous pouvez utiliser la fonction Balayer une chaîne pour analyser les données de la chaîne.

Transferts de waveforms

Les instruments peuvent renvoyer des données dans d'autres formats, notamment ASCII et binaire 1 octet et 2 octets. La documentation de l'instrument décrit les formats disponibles et la manière de convertir chacun en données utilisables.

Waveforms ASCII

Si un instrument renvoie des données au format ASCII, vous pouvez les afficher sous la forme d'une chaîne de caractères. Cependant, si vous avez besoin de manipuler les données dans un format numérique et que vous voulez les représenter sous forme de graphe, vous devez convertir les chaînes de données en données numériques. Par exemple, imaginons une waveform composée de 1 024 points et dans laquelle chaque point a une valeur comprise entre 0 et 255. En utilisant l'encodage ASCII, nous avons besoin d'un maximum de 4 octets pour représenter chaque valeur de données (un maximum de 3 octets pour la valeur et 1 octet pour le séparateur, par exemple une virgule). Vous avez besoin d'un maximum de 4 096 octets (4 fois 1 024 octets), plus les octets de début et de fin nécessaires à la représentation de la waveform sous forme de chaîne ASCII. Vous pouvez utiliser la fonction Chaîne Fract/Exp en nombre pour convertir la chaîne ASCII en tableau numérique.

Waveforms binaires 1 octet

Certains instruments n'ont pas l'option d'envoyer des données au format ASCII, ni celle d'envoyer toutes les données waveform au format binaire. Comme il n'existe aucune norme pour le format binaire, reportez-vous à la documentation de l'instrument pour déterminer de quelle manière exactement l'instrument stocke les valeurs de données. Un format binaire courant est binaire 1 octet. Avec ce type d'encodage de données, l'instrument convertit chaque élément de données en une valeur binaire 8 bits avant de l'envoyer.

Lorsque vous lisez des données binaires à un octet sur le bus, l'instrument renvoie les données sous la forme d'une chaîne de caractères. Cependant, ces caractères ne semblent pas correspondre aux données attendues. LabVIEW interprète les nombres binaires comme valeurs de caractères ASCII et affichent les caractères correspondants. Par exemple, si l'on envoie la valeur 65 comme une valeur de données, nous lisons le caractère A du bus. Il n'existe pas de caractère ASCII imprimable pour une valeur de 13, car 13 correspond à un caractère de retour chariot invisible.

Vous pouvez afficher ces caractères invisibles dans un indicateur chaîne en faisant un clic droit sur l'indicateur et en sélectionnant Affichage des codes '\' dans le menu local. Le caractère utilisé pour un retour à la ligne est \r dans un indicateur chaîne.

Pour utiliser les données numériques dans une chaîne ASCII avec le VI Analysis ou pour afficher ces données numériques dans un graphe ou un graphe déroulant, vous devez convertir la chaîne binaire en tableau numérique. Si l'instrument envoie une chaîne binaire qui contient 1 024 valeurs encodées binaires 1 octet, la waveform nécessite seulement 1 024 octets, plus les informations d'en-tête éventuelles. Si vous utilisez l'encodage binaire, 1 seul octet suffit pour représenter chaque valeur de données, à condition que chaque valeur soit un entier 8 bits non signé. Vous pouvez utiliser les fonctions Sous-ensemble d'une chaîne et la fonction Chaîne en tableau d'octets pour convertir la chaîne binaire en tableau d'entiers.

Remarque Lors de l'acquisition de données binaires, extrayez les données en utilisant la taille des données comme critère de recherche au lieu de rechercher le premier caractère des informations en fin de chaîne, car ce caractère pourrait faire partie des valeurs binaires.

Waveforms binaires 2 octets

Lorsque les données sont au format binaire 2 octets, elles sont encodées en binaire et envoyées sous forme de caractères ASCII, similaires au format binaire 1 octet. Cependant, 16 bits de données, ou deux caractères ASCII, représentent chaque valeur de données. Bien que ce format prenne deux fois plus de place que le format binaire 1 octet, il est compressé de façon plus efficace que des données au format ASCII.

Prenons comme exemple un oscilloscope qui transfère des données waveform en notation binaire. Pour cet exemple, partons du principe que la waveform consiste en 1 024 points de données où chaque valeur est un entier signé à 2 octets. Par conséquent, la waveform nécessite 2 048 octets, plus 5 octets pour les informations de début et 2 octets pour les informations en queue. Après avoir supprimé les informations d'en-tête de 5 octets, utilisez la fonction Redresser à partir d'une chaîne pour convertir la chaîne de waveform en tableau d'entiers 16 bits.

Il est essentiel de connaître l'ordre des octets que vous recevez lorsque les données sont transférées au format binaire 2 octets. La combinaison des 2 octets qH a la valeur correspondante en nombre entier de 29 000, mais si l'ordre des octets est inversé, soit Hq, cette combinaison a la valeur d'entier correspondante de 18 545.

Remarque Vous pouvez configurer l'ordre des octets sur certains instruments, alors que d'autres ont un ordre fixe. Reportez-vous à la documentation qui accompagne l'instrument pour obtenir des informations spécifiques ayant trait aux octets.

Si vous recevez l'octet haut en premier, vous devez inverser l'ordre des octets avant de les convertir en une valeur d'entier. Utilisez Redresser à partir d'une chaîne pour inverser l'ordre des octets.