Comment LabVIEW enregistre les données en mémoire

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 enregistre des données en mémoire pour les commandes, les indicateurs, les fils de liaison et d'autres objets, en fonction du type de données de l'objet.

Données booléennes

LabVIEW enregistre les données booléennes sous forme de valeurs de 8 bits. Si la valeur est zéro, la valeur booléenne est FAUX. Toute valeur non nulle est VRAI.

Entier octet

Les nombres entiers octet sont au format 8 bits, signés ou non signés.

Entier mot

Les nombres entiers mot sont au format 16 bits, signés ou non signés.

Entier long

Les nombres entiers longs sont au format 32 bits, signés ou non signés.

Entier quad

Les nombres entiers quad sont au format 64 bits, signés ou non signés.

Virgule fixe

Les nombres à virgule fixe sont au format 64 bits, signés ou non signés.

Simple précision

Les nombres à virgule flottante simple précision sont au format simple précision IEEE 32 bits.

Double précision

Les nombres à virgule flottante double précision sont au format double précision IEEE 64 bits.

Précision étendue

Les nombres à virgule flottante précision étendue sont au format précision étendue IEEE 80 bits.

Remarque  Dans certains cas, les nombres à virgule flottante précision étendue peuvent être au format de précision étendue IEEE 64, 96 et 128 bits, suivant le processeur de l'ordinateur. 80 bits est le format le plus courant.

Complexe simple précision

Les nombres complexes à virgule flottante simple précision sont constitués de valeurs réelles et imaginaires au format simple précision IEEE 32 bits.

Complexe double précision

Les nombres complexes à virgule flottante double précision sont constitués de valeurs réelles et imaginaires au format double précision IEEE 64 bits.

Complexe précision étendue

Les nombres complexes à virgule flottante précision étendue sont constitués de valeurs réelles et imaginaires au format précision étendue IEEE.

Les nombres à virgule flottante précision étendue sont au format précision étendue IEEE 80 bits.

Pour les nombres à virgule flottante et les nombres complexes, s est le bit de signe (0 pour positif, 1 pour négatif), exp est l'exposant de la base (base 2) et la mantisse est un nombre dans la gamme [0,1].

Horodatage

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, indépendant du fuseau horaire, 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.

Reportez-vous au document de support suivant sur ni.com pour obtenir des informations complémentaires sur les horodatages.

Tableaux

LabVIEW enregistre les tableaux comme des handles, ou comme des pointeurs vers des pointeurs, qui contiennent la taille de chaque dimension du tableau en entiers 32 bits suivis des données. Si le handle est 0, le tableau est vide. À cause des contraintes d'alignement de certaines plates-formes, il se peut que quelques octets de remplissage suivent la taille de la dimension pour que le premier élément de données soit correctement aligné. Si vous écrivez une bibliothèque partagée qui utilise un tableau LabVIEW, vous devrez peut-être ajuster la taille du handle.

L'illustration suivante représente un tableau 1D de nombres simple précision à virgule flottante. Les nombres décimaux à gauche représentent les offsets d'octets des emplacements en mémoire où le tableau commence.

L'illustration suivante représente un tableau 4D d'entiers 16 bits.

Dans LabVIEW, les tableaux 1D et 2D sont alignés en mémoire. Ceci améliore les performances dans les opérations d'algèbre linéaire et les opérations qui impliquent le type de données matrice.

Chaînes

LabVIEW enregistre des chaînes en tant que pointeurs vers une structure qui contient une valeur de longueur de 4 octets suivie d'un tableau 1D d'entiers octets (caractères à 8 bits), comme décrit dans l'illustration suivante. Si le handle, le pointeur vers la structure, est NULL, LabVIEW traite la chaîne comme une chaîne vide, c'est-à-dire une chaîne dont la valeur de longueur est zéro. Comme LabVIEW utilise la valeur de longueur plutôt qu'un caractère de fin pour déterminer où se termine la chaîne, vous pouvez utiliser tous les caractères, y compris le caractère NULL et le caractère 0 ASCII, n'importe où dans la chaîne. Lorsque des chaînes LabVIEW sont envoyées à du code externe qui s'attend à une chaîne en C, le code considère que la chaîne se termine au premier caractère NULL intégré.

Chemins

Un chemin LabVIEW est un pointeur vers une structure de données opaque qui contient le type et les composants du chemin. Le type de chemin est 0 pour un chemin absolu, 1 pour un chemin relatif et 3 pour un chemin UNC (Universal Naming Convention). Les chemins UNC ne concernent que Windows ; leur premier composant est \\<nom de l'ordinateur>\<nom du partage>\ plutôt qu'une lettre de lecteur. Toute autre valeur de type de chemin indique un chemin non valide.

Utilisez les fonctions suivantes pour accéder aux informations relatives à un chemin :

  • FDepth()
  • FDirName()
  • FIsAPath()
  • FIsAPathOfType()
  • FIsEmptyPath()
  • FNamePtr()
  • FVolName()

Utilisez les fonctions suivantes pour ajouter des éléments à un chemin :

  • FAddPath()
  • FAppendName()

Utilisez les fonctions suivantes pour créer un nouveau chemin :

  • FNotAPath()
  • FPathCpy()
  • FEmptyPath()
  • FMakePath()
  • FRelPath()

Utilisez la fonction FDestroyPath() pour supprimer un chemin.

Utilisez les fonctions suivantes pour convertir un chemin en format texte et vice-versa :

  • FFileSystemStringToPath()
  • FPathToFileSystemDSString()
  • FPathToText()
  • FTextToPath()
  • ConvertPathToPlatformIndependentText()
  • ConvertPlatformIndependentTextToPath()

Utilisez les fonctions suivantes pour comparer deux chemins :

  • FPathCmp()
  • FPathCmpLexical()

Clusters

LabVIEW enregistre les éléments de cluster de différents types de données selon l'ordre du cluster. Vous pouvez afficher et modifier l'ordre du cluster en effectuant un clic droit sur le cadre du cluster et en sélectionnant Changer l'ordre des commandes du cluster dans le menu local. LabVIEW enregistre directement les données scalaires dans le cluster et enregistre les tableaux, les chaînes et les chemins indirectement dans le cluster. En raison des contraintes d'alignement de certaines plates-formes, il est possible que LabVIEW ajoute des octets de remplissage à la fin d'un cluster dans un tableau, de façon à ce que le début du cluster suivant soit correctement aligné. Si vous écrivez une bibliothèque partagée qui utilise un tableau de clusters, vous pouvez tenir compte de ce remplissage en ajustant la taille du handle au tableau.

La disposition de la mémoire d'un cluster dépend de la plate-forme que vous utilisez. Il est possible que LabVIEW ajoute des octets de remplissage entre les éléments d'un cluster de manière à les aligner à certaines limites définies par des adresses. Une limite définie par une adresse se rapporte au concept d'alignement naturel. Un élément de données est aligné sur sa limite naturelle si l'adresse à laquelle il commence est un multiple de la taille de cet élément de données. Par exemple, un entier de 4 octets est naturellement aligné s'il commence à une adresse qui est un multiple de 4. La plupart des compilateurs ont une limite supérieure à laquelle cette restriction est relâchée. Par exemple, un entier de 8 octets peut être aligné sur une limite de 4 octets. Pour les plates-formes sur lesquelles LabVIEW s'exécute, les restrictions d'alignement sont les suivantes :

  • (Windows 32 bits) Les données sont alignées sur des limites de 1 octet uniquement.
  • (Mac OS X et Linux) Les données sont alignées naturellement sur des limites de 4 octets maximum.
  • (Windows 64 bits et VxWorks PowerPC) Les données sont alignées naturellement sur des limites de 8 octets maximum.

Sur toutes les plates-formes, les clusters adoptent l'alignement de l'élément dont l'alignement est le plus restreint.

Les tables suivantes représentent un cluster qui contient un entier 16 bits, un nombre à virgule flottante précision étendue, un tableau et un entier non signé 8 bits. Chaque ligne contient l'adresse mémoire et son élément correspondant, ainsi que la taille de cet élément.

  • (Windows 32 bits) Comme les données sont alignées sur des limites de 1 octet uniquement, l'adresse mémoire du cluster suivant est 17.

    Adresse mémoire Élément Taille (octets)
    0: entier I16 2
    2: à virgule flottante EXT 10
    12: handle vers tableau 4
    16: entier U8 1
  • (Mac OS X et Linux) Comme les données sont alignées naturellement sur des limites de 4 octets maximum, LabVIEW ajoute 3 octets de remplissage après l'entier U8 de sorte que l'adresse mémoire du cluster suivant est 24.

    Adresse mémoire Élément Taille (octets)
    0: entier I16 2
    2: Remplissage 2
    4: à virgule flottante EXT 10
    14: Remplissage 2
    16: handle vers tableau 4
    20: entier U8 1
    21: Remplissage 3
  • (Windows 64 bits) Comme les données sont alignées naturellement sur des limites de 8 octets maximum, LabVIEW ajoute 7 octets de remplissage après l'entier U8, de sorte que l'adresse mémoire du cluster suivant est 32.

    Adresse mémoire Élément Taille (octets)
    0: entier I16 2
    2: à virgule flottante EXT 10
    12: Remplissage 4
    16: handle vers tableau 8
    24: entier U8 1
    25: Remplissage 7
  • (VxWorks PowerPC) Comme les données sont alignées naturellement sur des limites de 8 octets maximum, LabVIEW ajoute 3 octets de remplissage après l'entier U8, de sorte que l'adresse mémoire du cluster suivant est 24.

    Adresse mémoire Élément Taille (octets)
    0: entier I16 2
    2: Remplissage 6
    8: à virgule flottante EXT 8
    16: handle vers tableau 4
    20: entier U8 1
    21: Remplissage 3

LabVIEW enregistre les clusters intégrés à d'autres clusters directement et sans adressage indirect. LabVIEW n'enregistre indirectement que les tableaux, les chaînes et les chemins.

L'illustration suivante montre deux clusters différents qui enregistrent les données de la même façon.

Waveform

LabVIEW enregistre les waveforms exactement comme les clusters.

Refnum

LabVIEW enregistre les refnums comme entiers signés 32 bits.

Variant

LabVIEW enregistre les variants comme handles vers une structure de données interne LabVIEW. Les données de type variant sont composées de 4 octets.

Concepts apparentés

Données aplaties

Descripteurs de type

Descripteurs de types dans LabVIEW 7.x et versions antérieures

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

Pas utile