From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Registre à décalage et E/S sur fichiers de bas niveau

Résolu !
Accéder à la solution

Bonjour,

 

Beaucoup d'exemples de VI (sur le net ou support de cours NI) montrant comment enregistrer des données sur des fichiers texte utilisent des registre à décalage dans une boucle While sur les refnums des fichiers.

Est-ce utile ? Pourquoi ?

 

Ci-dessous un exemple :

 

 

Pierre_DST_Ger_0-1608999369463.png

Merci à tous

 

Pierre

   

0 Compliments
Message 1 sur 4
1 092 Visites
Solution
Accepté par Desruelle_luc

Avec une boucle WHILE, le registre à décalage n'apporte rien car, peu importe les conditions d'arrêt, la boucle s'exécute toujours au minimum une fois.

 

Cela n'est pas contre pas le cas pour une boucle FOR qui, au contraire de la boucle WHILE, peut ne jamais s'exécuter. Si la boucle n'effectue aucune itération, un tunnel transmet la valeur par défaut de la donnée.

 

Prenons cet exemple. Dans un cas réel, les données seraient évidemment concaténées en bloc pour être mémorisées en une seule fois. Mais cela n'est pas le sujet du jour.

 

Registre à décalage boucle FOR.png

 

Tout se passe bien... à moins de définir Nb valeurs à 0. La boucle FOR ne s'exécute alors jamais et la référence du fichier est perdue. Tel n'est pas le cas en remplaçant le tunnel par un registre à décalage.

 

Même si le registre à décalage n'est pas utile avec une boucle WHILE, je suppose que c'est le risque montré ci-dessus qui explique son utilisation généralisée dans les exemples.

 

 

 

0 Compliments
Message 2 sur 4
1 048 Visites

Bonjour JB,

 

Merci. Ton explication est très claire.

Pas de doute, ça doit être l'explication.

 

Pierre

0 Compliments
Message 3 sur 4
1 040 Visites

Bonjour, c'est une très bonne réponse de JB.

Je pense qu'il y a aussi l'habitude. Dans l'exemple, le cluster de l'erreur est géré par un registre à décalage. C'est une habitude de mettre un registre à décalage pour ne pas perdre l'erreur. En le mettant tout le temps, cela évite de l'oublier. Cela permet aussi d'avoir des conventions, des règles communes, des bonnes habitudes. Pas toujours indispensables,  mais dans les fondamentaux des bonnes habitudes.

A+ Luc

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 4 sur 4
1 033 Visites