From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, 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 : 

Reference stricte (???)

Résolu !
Accéder à la solution

Comprends pas !!!  Smiley frustré

 

voici 2 array 2D de booléens ... A_1 et A_2

 

create / reference

 

A_1 me donne une référence stricte (cela me semble parfaitement normal)

 

A_2 me donne une référence non-stricte ... bon dieu pourquoi ?

 

(alors que si je "retire" (j'isole) un élémént de A_2 ... LV me dit bien qu'il s'agit d'un booléen)

 

 

SR1.png

 

 

Ce qui pose problème.

Si par exemple je fais un "value change" (dans une structure event) sur A_2

et que j'utilise la Ref d'entrée ... je suis obligé de travailler avec un variant.

Alors qu'avec A_1, aucun soucis.

 

 

SR2.png

 

 

Bon dieu ... pour quoi Labview n'arrive-t-il pas à "voir" le type du Tableau A_2 (alors que oui avec A_1) ???

 

fichier joint en LV2010

 

merci à tous.

 

 

 

 

0 Compliments
Message 1 sur 7
4 730 Visites

Je constate ceci :

 

si le booléen (avant d'être introduit dans le Tableau) est configuré en "latch" ... la Ref du Tableau est "sans type". (non stricte)

 

si le booléen (avant d'être introduit dans le Tableau) est configuré en 'switch" ... la Ref du Tableau reprend le type. (stricte)

 

J'aimerais beaucoup connaître le "pourquoi" de ce comportement.

 

car ... un booléen, qu'il soit "latch" ou "switch" ... reste un booléen.

0 Compliments
Message 2 sur 7
4 723 Visites

Salut, 

 

Une race condition peut apparaitre ce qui "interdit" la lecture ou l'écriture d'un Boolean en Latch comme l'explique ce lien

Je pense que l'Aide sur les action mécanique du Boolean l'explique aussi.

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 3 sur 7
4 711 Visites

Quand on sait pas il faut lire l'aide 😃

 

http://zone.ni.com/reference/en-XX/help/371361L-01/lvprop/ctrl_value_lv_var/

 

--Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 4 sur 7
4 700 Visites

Bonjour Benjamin,

 

".... interdit" la lecture ou l'écriture d'un Boolean en Latch comme l'explique ...."

 

oui, je sais ça.   (mais ici je vais un rien plus loin que ce postulat "de base")  

 

Une fois que le booléen est placé dans un Tableau, je pense que la propriété  "Mechanical Action" n'a plus de sens;

Cette propriété devient "grisée", elle n'est plus accessible.

 

Les booléens contenus dans un Tableau de booléens réagissent tous de la même façon,

Je veux dire par là ... quelle que soit leur "mechanical action" avant d'être placé dans le dit Tableau.

 

 

Regarde la capture d'écran ci-dessous.

 

a) Avant d'être placé dans le Tableau, le booléen était en "latch when pressed".

 

b) je le place dans un Tableau ... le "latch when pressed" devient "grisé"  ("You can not set the mechanical action ... etc ... ")

 

c) La structure Event sait parfaitement lire le Tableau ... puisqu'elle me le donne dans "NewVal"

 

d) Cette structure Event connait également parfaitement le "type" de Newval ... puisque NewVal est bien un Array de booléen.

 

c) et pourtant .... la Référence, elle, n'est pas typée ... via la Référence, j'ai seulement accès à un variant.

 

 

Cette structure Event sait parfaitement lire le Tableau et en connaît parfaitemnt le type, alors pourquoi cette Référence non typée ???

 

 

 

SR2.png

 

EDIT:

 

Eric

 

Je sais ça. ( c'est même un vieux truc Smiley heureux )

Mon interrogation va au delà de ce principe "de base".

Merci d'essayer de comprendre ce qui m'interpelle.

 

0 Compliments
Message 5 sur 7
4 697 Visites
Solution
Accepté par l'auteur du sujet ouadji

Ce n'est pas un problème de fonctionnement du booléen ou de la commande.

 

Pour faire simple une référence n'est typée que si la commandes ET commandes imbriquées le sont.

Si on ajoute une commande non-typée à un cluster (par ex. ce fameux booléen en armement), on aura le même résultat : la référence au cluster ne sera pas typée (et donc Value retourne un variant). Au contraire si la/les commande(s) d'un conteneur (tableau ou cluster) sont toutes typées, la référence au conteneur sera typée.

 

Pour la remarque d), elle n'a pas de sens parce qu'on ne passe pas par le VI Serveur pour lire la valeur dans la structure événement, donc il n'y aura pas de situation de compétition !

 

A+

--Eric

 

 

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 6 sur 7
4 684 Visites

une référence n'est typée que si la commandes ET les commandes imbriquées le sont.

 

on ne passe pas par le VI Serveur pour lire la valeur dans la structure événement

 

Deux phrases "simples" ... mais qui ont du poids.

 

surtout la 2eme ... ça, il fallait le savoir .... la 1ere, elle, est "éventuellement" déductible.

 

C'est ce qui me manque ... une connaissance de Labview de l'intérieur.

Cela me permettrait "d'extrapoler" entre 2 points de la connaissance (de LV)

 

Merci Eric, comme dab, tip-top !

Merci à Benjamin également.

 

 

Message 7 sur 7
4 681 Visites