J'essaie de lire des données stockées dans un fichier binaire personnalisé généré à l'aide de LabVIEW. Le fichier de données est créé en écrivant un tableau de clusters. Je veux lire dans les informations de cluster de ce fichier de données en utilisant un programme écrit en .net. Existe-t-il un moyen simple de le faire sans modifier le fichier généré par labview?Comment lire des données de cluster à partir d'un fichier généré par labview à l'aide de .net
Répondre
Cela dépend un peu de votre définition de "facile". Si vous utilisez les fonctions standard LV, un fichier binaire directement écrit est stocké de la même manière que les magasins data in memory. Ainsi, les 4 premiers octets stockent le nombre d'éléments dans le tableau. Le reste est les données réelles: les grappes. Chaque cluster est composé de ses membres, dont chacun a une taille d'octet comme spécifié dans le lien ci-dessus. Cela peut devenir un peu obtus si vous avez des grappes de tableaux de grappes de tableaux ... de toute façon, une fois que vous avez compris les types et les tailles des données qui ont été écrites, vous êtes à mi-chemin. Ensuite, vous pouvez presque lire le fichier en utilisant un .NET BinaryReader. Cependant, LV descendait du Mac, et, en tant que tel, c'est big endian. BinaryReader ne fait pas ça.
Heureusement, Jon Skeet fait. Vérifiez sa bibliothèque MiscUtil pour un EndianBinaryReader qui peut lire les données correctement.
Merci, c'est juste l'affaire. Il est important de noter qu'il semble que les chaînes sont stockées avec le premier octet comme longueur de la chaîne, puis chaque octet restant représentant un caractère. – Namaste
Oui, LabVIEW ne fait pas de NULL-octets. Le format que vous décrivez est listé dans 'Comment LabVIEW stocke les données en mémoire' –