LabVIEW associe chaque fil de liaison et chaque terminal du diagramme à un type de données. LabVIEW garde ce type en mémoire avec une structure appelée descripteur de type. Un descripteur de type est une séquence d'entiers 32 bits capable de décrire tout type de données dans LabVIEW. Les valeurs numériques sont écrites au format hexadécimal, sauf mention du contraire.

Un type peut être un agrégat, c.-à-d. composé de différents types. Par exemple, dans un tableau de booléens, le tableau est un type et ses éléments booléens sont un autre type. Dans LabVIEW, tous les descripteurs de types de tels types complexes sont enregistrés dans une liste.

Formats d'observation

Vous pouvez observer les descripteurs de types dans différents formats en utilisant la fonction Aplatir en chaîne ou Variant en chaîne aplatie.

Remarque Le format dans lequel LabVIEW stocke les descripteurs de types a changé dans LabVIEW 8.0. LabVIEW 7.x et version antérieure enregistre les descripteurs de type en représentation plate à 16 bits. LabVIEW 8.0. et versions ultérieures enregistrent les descripteurs de types en représentation plate à 32 bits. Les informations pour LabVIEW 7. x et versions antérieures vous concernent si vous utilisez le mode Convertir des données de la version 7.x de la fonction Aplatir en chaîne. Les informations suivantes concernent LabVIEW 8.0 et versions ultérieures. NI vous recommande d'utiliser le type de données variant pour éviter les conflits que les changements de ces formats pourraient causer.

Si vous utilisez la fonction Aplatir en chaîne pour aplatir des données variant, LabVIEW aplatit le variant et tout son contenu, y compris les attributs. Si vous utilisez cette fonction, le buffer d'enregistrement du descripteur de types a le format suivant :

32 bits nDT DT
taille var nTypesUtilisés
taille var TypesUtilisés
nTDs est le nombre de descripteurs de types élémentaires contenus dans le buffer
DT est la liste des nDT descripteurs de types
taille var est la taille variable, stockée dans un nombre variable 16 ou 32 bits selon la valeur à représenter. Si la valeur est inférieure à 32768, elle est stockée avec deux octets. Si la valeur est supérieure ou égale à 32768, elle est stockée avec four octets, le bit de poids fort étant défini à 1.
nTypesUtilisés est le nombre réel de types de descripteurs de types utilisés par l'entité qui fait référence au buffer.
TypesUtilisés est la liste d'indices pour tous les types de DT utilisés.

Si vous utilisez la fonction Variant en chaîne aplatie, LabVIEW n'aplatit que le variant et supprime les attributs. Si vous utilisez cette fonction, un descripteur de type a le format suivant :

[taille][code de type][infos spécifiques au type][nom (le cas échéant)]

[taille] est le premier mot, en octets, taille du mot incluse. La valeur minimale de [taille] est 4. Vous pouvez ajouter un nom (une chaîne Pascal) à un descripteur de type, ce qui augmente la valeur de [taille] de la longueur du nom arrondie à une valeur paire. La taille est 16 bits.
[code de type] est le deuxième mot. LabVIEW réserve l'octet de rang supérieur du code de type pour usage interne. Pour comparer deux descripteurs de types, il faut ignorer cet octet. Deux descripteurs de types sont égaux même si les octets de rang supérieur des codes de type sont différents. Le code de type est 16 bits.
[infos spécifiques au type] correspond à des informations supplémentaires concernant le descripteur de type. Les tableaux et les clusters sont des types de données structurés ou rassemblés car ils incluent des références à d'autres types. Par exemple, le type cluster contient des informations supplémentaires sur le type de chaque élément.
[nom] est une chaîne Pascal. Le nom peut être présent ou non.

Le code de type encode les informations sur le type, comme nombre simple précision ou précision étendue à virgule flottante, comme répertorié dans le tableau ci-après. Il est possible que ces codes de type changent dans les versions ultérieures de LabVIEW.

Types de données

Le tableau suivant répertorie les types de données numériques et non numériques, les codes de types et les descripteurs de types. La valeur minimale de [taille] apparaît avant le code de type. Les informations sur les valeurs possibles d'[infos spécifiques au type] apparaissent après le code de type pour certains types de données.

Remarque Le nom peut être ajouté à n'importe quel descripteur de type. Le nom est une chaîne Pascal.
Type de données Descripteur de type (nombres au format hexadécimal)
Entier 8 bits 0004 xx 01
Entier 16 bits 0004 xx 02
Entier 32 bits 0004 xx 03
Entier 64 bits 0004 xx 04
Entier 8 bits non signé 0004 xx 05
Entier 16 bits non signé 0004 xx 06
Entier 32 bits non signé 0004 xx 07
Entier 64 bits non signé 0004 xx 08
Nombre flottant simple précision 0004 xx 09
Nombre flottant double précision 0004 xx 0A
Nombre flottant, précision étendue 0004 xx 0B
Nombre flottant simple précision complexe 0004 xx 0C
Nombre flottant double précision complexe 0004 xx 0D
Nombre flottant précision étendue complexe 0004 xx 0E
Entier 8 bits énuméré <nn> xx 15 <k><k pstrs>
Entier 16 bits de type énuméré <nn> xx 16 <k><k pstrs>
Entier 32 bits de type énuméré <nn> xx 17 <k><k pstrs>
Quantité physique simple précision <nn> xx 19 <k><k base-exp>
Quantité physique double précision <nn> xx 1A <k><k base-exp>
Quantité physique précision étendue <nn> xx 1B <k><k base-exp>
Quantité physique simple précision complexe <nn> xx 1C <k><k base-exp>
Quantité physique double précision complexe <nn> xx 1D <k><k base-exp>
Quantité physique précision étendue complexe <nn> xx 1E <k><k base-exp>
Booléen 0004 xx 21
Chaîne 0008 xx 30 <dim>
Chemin 0008 xx 32 <dim>
Image 0008 xx 33 <dim>
Tableau <nn> xx 40 <k dims><descripteur du type d'élément>
Cluster <nn> xx 50 <k élmnts><descripteurs des types d'éléments>
Waveform <nn> xx 54 <type de waveform><descripteurs de types d'éléments>
Refnum <nn> <code type de refnum>
Variant <nn> xx 53
nn = longueur ; xx = réservé par LabVIEW ; k = nombre ; k chaînesP = nombre de chaînes Pascal ; k base-exp = nombre de paires base-exposant ; k dims = nombre de dimensions ; k élmnts = nombre d'éléments ; dim est un entier 32 bits.

La valeur minimale du champ de taille d'un descripteur est 4, comme l'indique le tableau précédent. Toutefois, un nom (une chaîne Pascal) peut être ajouté à tout descripteur de type. Dans ce cas, la valeur du champ de taille est augmentée de la longueur du nom (en tant que chaîne Pascal) arrondie au nombre pair supérieur.

Entier 8 bits énuméré

Dans l'exemple suivant d'un entier 8 bits de type énumération sans nom pour les éléments am, fm et fm stereo, chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale.

0016 0015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F

Le descripteur de type comporte les mots suivants :

  • 0016 — indique un total de 22 octets
  • 0015 — indique le code de type pour un entier énuméré 8 bits
  • 0003 — indique qu'il y a trois éléments
  • 0261 6D02 666D 0966 6D20 7374 6572 656F — indique les informations spécifiques au code de type. Par exemple, 0261 6D est l'encodage ASCII pour am, le préfixe 02 indiquant la taille de la chaîne en hexadécimal.

Si le même entier 8 bits de type énum a été nommé radio, son descripteur de type peut être interprété comme suit :

001C 4015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F 0572 6164 696F

Voici une comparaison des deux descripteurs :

Longueurs différentes

Codes de type identiques

Représentation identique des valeurs énum

Nom, radio en chaîne Pascal

Quantité physique

Dans l'exemple suivant d'une quantité physique double précision avec des unités de m/s, chaque groupe de caractères représente un mot 16 bits exprimé en notation hexadécimale.

000E 001A 0002 0002 FFFF 0003 0001

Le descripteur de type comporte les mots suivants :

  • 000E — indique un total de 14 octets
  • 001A — indique le code de type pour une quantité physique double précision
  • 0002 — indique deux paires base-exposant
  • 0002 — représente l'indice de la base des secondes
  • FFFF (-1) — indique l'exposant des secondes
  • 0003 — représente l'indice de la base des mètres
  • 0001 — indique l'exposant des mètres

LabVIEW stocke automatiquement toutes les quantités physiques en termes d'unités de base, quelles que soient les unités utilisées pour les afficher.

Le tableau suivant illustre les neuf bases utilisées par LabVIEW, ainsi que leur représentation par les indices 0 à 8.

Nom de la quantité Unité Abréviation Valeur de base
angle plan radian rad 0
angle solide stéradian sr 1
heure seconde s 2
longueur mètre m 3
masse kilogramme kg 4
courant électrique ampère A 5
température thermodynamique kelvin K 6
quantité d'une substance mole mol 7
intensité lumineuse candela cd 8

Types de données chaîne, chemin et image

Les types de données chaîne, chemin et image ont une longueur de 32 bits, semblable à la taille des dimensions des tableaux. Cependant, à l'heure actuelle, la seule valeur encodée est la valeur hexadécimale FFFFFFFF, ce qui indique une taille variable. Actuellement, les chaînes, les chemins et les images ont tous une taille variable. La longueur réelle est enregistrée avec les données.

Types de données tableau et cluster

Les types de données tableau et cluster ont chacun leur propre code de type. Ils contiennent aussi des informations supplémentaires sur les types de données de leurs éléments, ainsi que la dimension dans le cas des tableaux et le nombre d'éléments dans le cas des clusters.

Tableau

Le code de type d'un tableau est 40. Le descripteur de type d'un tableau a le format suivant :

<nn> xx 40 <k dims><descripteur du type d'élément>

Prenons l'exemple suivant d'un descripteur de type pour un tableau 1D de nombres flottants double précision, où chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale :

000E 0040 0001 FFFF FFFF 0004 000A [infos spécifiques au type]

Le descripteur de type comporte les mots suivants :

  • 000E — indique un total de 12 octets, qui correspond à la longueur de tout le descripteur de type, y compris l'indice de type d'élément
  • 0040 — indique le code de type d'un tableau
  • 0001 — indique que le nombre de dimensions du tableau est 1
  • FFFF FFFF — indique la taille de la dimension, qui est de taille variable. LabVIEW stocke la taille réelle des dimensions, qui est toujours supérieure ou égale à zéro, avec les données.
  • 0004 000A — indique le descripteur de type de l'élément. Le type d'élément peut être n'importe quel type, sauf un tableau. Dans cet exemple. les éléments sont des nombres flottants double précision et ont les mots suivants :
    • 0004 — indique 4 octets pour la taille de l'élément
    • 000A — indique le code de type pour un nombre flottant double précision

Pour cet exemple, le buffer d'enregistrement du descripteur de type a le format suivant :

Nombre de descripteurs de types 0000 0002 Le nombre de descripteurs de types uniques est 2.
Descripteur de type 0 0004 000A Le premier descripteur de type est pour le nombre flottant double précision.
Descripteur de type 1 000E 0040 0001 FFFF FFFF Le second descripteur de type représente le tableau. 000E est la longueur de tout le descripteur de type, y compris l'indice de type d'élément. Comme le tableau est de taille variable, la dimension est FFFFFFFF.
Nombre de types utilisés 0002 Le nombre total de types utilisés est 2.
Types utilisés 0000 0001 Les types utilisés sont 0 et 1.

Soit l'exemple suivant d'un descripteur de type pour un tableau 2D de valeurs booléennes :

0012 0040 0002 FFFF FFFF FFFF FFFF 0004 0021 [infos spécifiques au type]

Le descripteur de type comporte les mots suivants :

  • 0012 — indique un total de 18 octets, qui correspond à la longueur de tout le descripteur de type, y compris l'indice de type d'élément
  • 0040 — indique le code de type d'un tableau
  • 0002 — indique que le nombre de dimensions du tableau est 2
  • FFFF FFFF (-1) — indique la taille de la première dimension, qui est variable.
  • FFFF FFFF (-1) — indique la taille de la deuxième dimension, qui est variable.
  • 0004 0021 — indique le descripteur de type de l'élément. Dans cet exemple. les éléments sont des booléens et ont les mots suivants :
    • 0004 — indique 4 octets pour la taille de l'élément
    • 0021 — indique le code de type d'un booléen

Pour cet exemple, le buffer d'enregistrement du descripteur de type a le format suivant :

Nombre de descripteurs de types 0000 0002 Le nombre de descripteurs de types uniques est 2.
Descripteur de type 0 0004 0021 Le premier descripteur de type est pour le booléen.
Descripteur de type 1 0012 0040 0002 FFFF FFFF FFFF FFFF Le second descripteur de type représente le tableau. 0012 est la longueur de tout le descripteur de type, y compris l'indice de type d'élément. Comme le tableau est de taille variable, la dimension est FFFFFFFF.
Nombre de types utilisés 0002 Le nombre total de types utilisés est 2.
Types utilisés 0000 0001 Les types utilisés sont 0 et 1.

Cluster

Le code de type d'un cluster est 50. Le descripteur de type d'un cluster a le format suivant :

<nn> xx 50 <k élmnts><descripteurs des types d'éléments>

Prenons l'exemple suivant d'un descripteur de type pour un cluster contenant deux entiers (un entier signé 16 bits et un entier non signé 32 bits), où chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale :

000E 0050 0002 0004 0002 0004 0007

Le descripteur de type comporte les mots suivants :

  • 000E — indique un total de 14 octets
  • 0050 — indique le code de type d'un cluster
  • 0002 — indique que le nombre d'éléments du cluster est 2
  • 0004 0002 — indique le descripteur de type du premier élément, un entier signé 16 bits :
    • 0004 — indique 4 octets
    • 0002 — indique le code de type pour un entier signé 16 bits
  • 0004 0007 — indique le descripteur de type du deuxième élément, un entier non signé 32 bits :
    • 0004 — indique 4 octets
    • 0007 — indique le code de type pour un entier non signé 32 bits

Le buffer d'enregistrement du descripteur de type a le format suivant :

Nombre de descripteurs de types 0000 0003 Le nombre de descripteurs de types uniques est 3.
Descripteur de type 0 0004 0002 Le premier descripteur de type est pour l'entier signé 16 bits.
Descripteur de type 1 0004 0007 Le deuxième descripteur de type est pour l'entier non signé 32 bits.
Descripteur de type 2 000E 0050 0002 Le troisième descripteur de type est pour le cluster. 000E est la longueur de tout le descripteur de type, y compris les indices des types du cluster.
Nombre de types utilisés 0003 Le nombre total de types utilisés est 3.
Types utilisés 0000 0001 0002 Les types utilisés sont 0, 1 et 2.

Comme les descripteurs de types des tableaux et des clusters contiennent d'autres descripteurs de types, ils sont susceptibles de devenir profondément imbriqués.

Notez que les types dupliqués ne sont pas inclus dans la liste de types. L'exemple suivant est une liste de descripteurs de types d'un tableau 1D de nombres flottants double précision et d'un cluster avec un nombre flottant double précision.

Nombre de descripteurs de types 0000 0003 Le nombre de descripteurs de types uniques est 3.
Descripteur de type 0 0005 000A 00 Le premier descripteur de type est pour le type d'élément et est identique à celui d'un scalaire du même type.
Descripteur de type 1 000C 0040 0001 FFFF FFFF 0000 Le second descripteur de type représente le tableau. 000C est la longueur du descripteur de type, y compris l'indice de type d'élément. Comme le tableau est de taille variable, la dimension est FFFFFFFF.
Descripteur de type 2 0008 0050 0001 0002 Le troisième descripteur de type est pour le cluster. 0008 est la longueur du descripteur de type, y compris l'indice de type de cluster. Le cluster contient 1 élément du type à l'indice 2.
Nombre de types utilisés 0003 Le nombre total de types utilisés est 4.
Types utilisés 0000 0001 0000 0002 Les types utilisés sont 0, 1, 0 et 2.

Notez que le type référencé dans le cluster à l'indice 2 doit avoir une correspondance dans le tableau de types utilisés pour avoir une signification quelconque. Le second élément de types utilisés est 0, ce qui correspond au descripteur de type 0.

Waveform

Le code de type d'une waveform est 54. Un mot contenant le type de waveform suit directement le code de type. Le descripteur de type du cluster des éléments des waveforms suit ce mot. Il existe cinq catégories de waveforms :

  • Analogiques
  • Numériques
  • Données numériques
  • Horodatage
  • Dynamique

Waveform analogique

Le tableau suivant liste les types de waveforms analogiques.

Type Code de sous-type
Signé 8 bits 14
Signé 16 bits 2
Signé 32 bits 15
Signé 64 bits 19
Double précision 3
Simple précision 5
Précision étendue 10
Non signé 8 bits 11
Non signé 16 bits 12
Non signé 32 bits 13
Non signé 64 bits 20
Complexe simple précision 16
Complexe double précision 17
Complexe précision étendue 18

Par exemple, considérons une waveform double précision, où chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale :

0006 0054 0003 //taille de la waveform, code de type de waveform et code de sous-type double précision 3

0080 0050 0005 //taille du cluster, code de cluster et nombre d'éléments

<descripteur de type de l'horodatage>

<descripteur de type de dt>

<descripteur de type du tableau du type d'élément>

<descripteur de type du cluster d'erreur inutilisé>

<descripteur de type des attributs>

Le descripteur de type des autres types de waveforms analogiques est semblable à celui des waveforms double précision. La différence consiste en un type différent pour l'élément tableau et un sous-type différent.

Données numériques et données numériques waveform

La waveform numérique est le seul type de waveform qui a le code de sous-type 8.

Par exemple, considérons la situation suivante, où chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale :

00B6 0054 0008 //taille de la waveform numérique, code de type de waveform et code de sous-type 8

<descripteur de type de l'horodatage>

<descripteur de type de dt>

<descripteur de type de données numériques>

<descripteur de type du cluster d'erreur inutilisé>

<descripteur de type des attributs>

Données numériques

Les données numériques sont le seul type de données qui a un code de type waveform et le code de sous-type 7.

Par exemple, considérons la situation suivante, où chaque groupe de caractères représente un mot 16 bits, exprimé en notation hexadécimale :

003E 0054 0007 //taille des données numériques, code de type de waveform et code de sous-type 7

<descripteur de type des transitions>

<descripteur de type des données>

Horodatage

L'horodatage a le code de sous-type 6. L'horodatage est un nombre à virgule fixe 128 bits avec une base 64 bits. LabVIEW stocke un horodatage sous forme de cluster de quatre entiers, les deux premiers entiers signés (64 bits) représentant le nombre de secondes complètes qui se sont écoulées depuis le vendredi 1er janvier 1904 à 0 heure, temps universel [01-01-1904 00:00:00]. Les deux entiers non signés suivants (64 bits) représentent les fractions de secondes.

001C 0054 0006 //taille de l'horodatage, code de type de waveform et code de sous-type d'horodatage 6

<descripteur de type d'une waveform analogique>