Données aplaties

Aide LabVIEW 2014

Date d'édition : June 2014

Numéro de référence : 371361L-0114

»Afficher les infos sur le produit
Télécharger l'aide (Windows uniquement)

LabVIEW convertit les données du format en mémoire à un format mieux adapté à la lecture et l'écriture dans un fichier. Ce format mieux adapté est appelé données aplaties.

Comme LabVIEW enregistre les chaînes, les tableaux et les chemins sous forme de handles (des pointeurs sur des pointeurs dans différentes zones de mémoire), les clusters qui contiennent ces chaînes et ces tableaux ne sont pas contigus. En général, LabVIEW enregistre les données en arborescence. Par exemple, LabVIEW enregistre un cluster comme un nombre double précision à virgule flottante, et une chaîne comme un nombre 8 octets à virgule flottante suivi d'un handle 4 octets vers la chaîne. LabVIEW n'enregistre pas en mémoire les données de la chaîne à côté du nombre précision étendue à virgule flottante. Par conséquent, pour écrire les données du cluster sur le disque dur, LabVIEW doit aller chercher les données dans deux endroits. Si un cluster contient un grand nombre de chaînes, de tableaux et/ou de chemins, LabVIEW enregistre les données dans beaucoup d'endroits différents.

Lorsque vous enregistrez des données dans un fichier, LabVIEW aplatit les données en chaîne unique avant de les enregistrer. L'aplatissement des données rend les données d'un cluster arbitrairement complexe contiguës plutôt que de les enregistrer dans différents endroits. Quand LabVIEW charge des données d'un fichier, LabVIEW doit effectuer l'opération inverse, c'est-à-dire lire une chaîne unique et la redresser pour lui redonner sa forme interne, éventuellement non contiguë.

LabVIEW normalise les données aplaties sous une forme standard pour que les VIs qui s'exécutent sur n'importe quelle plate-forme puissent utiliser les données. LabVIEW enregistre les données numériques aplaties au format big endian (l'octet le plus significatif en premier) et il enregistre les nombres précision étendue à virgule flottante aplatis sous forme de quantités à 16 octets.

Lorsque vous écrivez des données dans un fichier pour les utiliser dans une application qui n'a pas été créée avec LabVIEW, ou que vous lisez des données à partir d'un fichier produit par une application qui n'a pas été créée avec LabVIEW, vous pouvez convertir les données au format little endian (l'octet le moins significatif en premier) ou big endian après les avoir aplaties ou avant de les redresser. En général, les applications Windows s'attendent à ce que les données numériques soient au format "little endian".

Utilisez les fonctions Aplatir en chaîne et Redresser à partir d'une chaîne pour aplatir ou redresser des données comme le fait LabVIEW automatiquement lorsqu'il enregistre et charge des données.

La forme aplatie des données n'encode pas le type de données. LabVIEW enregistre cette information dans un descripteur de type. Pour la fonction Redresser à partir d'une chaîne, vous devez câbler un type de données comme entrée pour que la fonction décode la chaîne correctement.

Plutôt que d'aplatir les données lorsque vous écrivez en mémoire et de les redresser lorsque vous lisez de la mémoire, utilisez le type de données variant pour manipuler les données indépendamment du type de données. Utilisez les fonctions Variant pour créer et manipuler des données variant.

Remarque  Si vous utilisez la fonction Aplatir en chaîne sur des données variant, LabVIEW aplatira le variant et tout son contenu, y compris les attributs. Cependant, si vous utilisez la fonction Variant en chaîne aplatie, LabVIEW n'aplatit que le variant et supprime les attributs.

Objets booléens et numériques

La forme aplatie de tout type numérique ou booléen enregistre les données uniquement au format "big endian". Par exemple, un entier 32 bits ayant la valeur –19 est aplati en FFFF FFED. Un nombre double précision à virgule flottante ayant la valeur 1/4 est aplati en 3FD0 0000 0000 0000. La valeur booléenne VRAI est toute valeur non nulle. La valeur booléenne FAUX est 00.

La forme aplatie des nombres à précision étendue est le format précision étendue à virgule flottante 128 bits. Lorsque vous enregistrez des nombres à précision étendue sur le disque dur, LabVIEW les enregistre dans ce format.

Chaînes et chemins

Comme la taille des chaînes et des chemins peut varier, la forme aplatie est précédée d'un entier 32 bits aplati qui enregistre la longueur en octets. Par exemple, un type de chaîne ayant la valeur ABC est aplati en 0000 0003 4142 43. Pour les chaînes, le format aplati est semblable à celui que la chaîne a en mémoire.

Cependant, les chemins ne sont pas précédés d'une valeur de longueur lorsque LabVIEW les enregistre en mémoire ; cette valeur provient de la taille réelle des données en mémoire et précède la valeur lorsque LabVIEW aplatit les données. Cette longueur est précédée de quatre caractères : PTH0.

Par exemple, un chemin ayant la valeur C:\File est aplati en 5054 4830 0000 000B 0000 0002 0143 0466 696C 65.

5054 4830 représente PTH0. 0000 000B représente un total de 11 octets. 0000 est le type. 0002 est le nombre de composants. 0143 indique la lettre C en chaîne Pascal. 0466 696C 65 indique le mot File en chaîne Pascal.

Tableaux

Pour un tableau aplati, les données sont précédées d'entiers 32 bits aplatis qui représentent la taille, en éléments, de chaque dimension du tableau. La dimension qui a la variation la plus lente apparaît en premier, suivie des dimensions qui varient plus vite, de la même façon que les tailles de dimensions sont enregistrées en mémoire. Les données aplaties suivent immédiatement ces tailles de dimensions dans l'ordre utilisé par LabVIEW pour les enregistrer en mémoire. L'exemple suivant illustre un tableau 2D de six entiers 8 bits.

{ {1, 2, 3}, {4, 5, 6} } est aplati en 0000 0002 0000 0003 0102 0304 0506.

L'exemple suivant illustre un tableau 1D aplati de variables booléennes.

{T, F, T, T} est aplati en 0000 0004 0100 0101. La valeur préférée pour VRAI est 01.

Clusters

Un cluster aplati est la concaténation, dans l'ordre du cluster, des données aplaties de ses éléments. Par exemple, un cluster aplati d'un entier 16 bits de valeur 4 (décimale) et d'un entier 32 bits de valeur 12 est 0004 0000 000C.

Un cluster aplati d'une chaîne ABC et d'un entier 16 bits de valeur 4 est 0000 0003 4142 4300 04.

Un cluster aplati d'un entier 16 bits de valeur 7, d'un cluster d'un entier 16 bits de valeur 8 et d'un entier 16 bits de valeur 9 est 0007 0008 0009.

Waveforms

LabVIEW enregistre les waveforms exactement comme les clusters.

Refnums

LabVIEW enregistre la plupart des refnums aplatis comme des entiers 32 bits aplatis, ce qui représente une structure de données LabVIEW interne.

Vous pouvez classifier les autres refnums par leur code de type refnum.

Les codes de type 0xE, 0xF et 0x15 sont des refnums qui enregistrent leurs données en chaîne aplatie. Cette chaîne contient la valeur du tag de refnum et peut être vide (4 octets de zéros).

Les codes de type 0x1A, 0X1C et 0x1D se concatènent dans l'ordre suivant :

  1. Une chaîne aplatie pour le nom du tag du refnum. Cette chaîne est vide (4 octets de zéros) si le refnum n'a pas de tag.
  2. Une chaîne aplatie qui contient des informations spécifiques au refnum. Cette chaîne peut être vide (4 octets de zéros).
  3. Une chaîne aplatie qui contient des informations spécifiques au refnum. Cette chaîne peut être vide (4 octets de zéros).
  4. Un entier signé 32 bit aplati qui contient des informations spécifiques au refnum.
  5. Une chaîne aplatie qui contient des informations spécifiques au refnum. Cette chaîne peut être vide (4 octets de zéros).

Classes

LabVIEW aplatit une classe LabVIEW en suivant le format général ci-après :

niveau dans la hiérarchie nom de classe liste des versions données privées
  • niveau dans la hiérarchie — Entier non signé de quatre octets représentant à combien de niveaux la classe se trouve dans la hiérarchie de classes. Par exemple, si cette valeur est 2, il existe une classe ancêtre entre la classe et l'objet LabVIEW.
    Remarque  Si niveau dans la hiérarchie est 0, l'objet est une instance d'Objet LabVIEW, et LabVIEW exclut les trois autres champs de la chaîne.
  • nom de classe — Séquence de chaînes Pascal précédées d'un seul octet qui indique la longueur du nom qualifié de la classe. Chaque chaîne Pascal, ou séquence d'octets dont le premier indique la longueur de la chaîne et les suivants correspondent au texte de la chaîne, représente un segment du nom qualifié. La dernière chaîne Pascal est un octet de longueur de zéro. Cette section de la chaîne aplatie comprend suffisamment d'octets de remplissage à zéro pour augmenter la section du nom de classe pour qu'elle soit un multiple de 4 octets.
  • liste des versions — Série de clusters dans laquelle chaque cluster est composé de quatre entiers non signés de 2 octets représentant le numéro de version. Le premier cluster de cette liste représente la version du nom de classe, le deuxième est la version de son parent, et ainsi de suite. Cette liste contient un numéro de version pour chaque niveau de la hiérarchie.
    Remarque  Si le niveau dans la hiérarchie est 1 et que la version est 0, les données aplaties représentent les données par défaut de la classe, et LabVIEW exclut le champ restant de la chaîne.
  • données privées — Série de clusters aplatis représentant les données privées de chaque niveau de la hiérarchie. À l'inverse de la liste des versions, le premier cluster de cette série correspond à la classe ancêtre de plus haut niveau. Chaque cluster aplati commence par un entier signé de 4 octets représentant le nombre d'octets des données qui suivent. Si le nombre initial est 0, le cluster aplati représente les données par défaut de la classe correspondante dans la hiérarchie. Sinon, les données suivantes utilisent la représentation du cluster aplati standard détaillée précédemment dans cette rubrique. Chaque cluster aplati se termine par suffisamment d'octets de remplissage pour augmenter le cluster jusqu'à un multiple de 4 octets.

CET ARTICLE VOUS A-T-IL ÉTÉ UTILE ?

Pas utile