Discussions au sujet de NI LabVIEW

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

Comparaison Refs = Comparaison Objets (Queue)

 

un petit soucis quand je compare 2 Reférences ...

 

A

Je crée une Queue "toto" ... j'y place l'élément I32 "1234"

ensuite je fais accès à cette Queue par un "Obtain Queue" ... cette Queue existe déjà .... elle est nommée (toto)

J'obtiens donc une "autre Reference" sur cette Queue "toto".

Pour preuve,  je "retrouve" mon élément "1234" ... et  ... "Created new?" est False.

 

B 

Quand labview compare des refs, il compare les Objets correspondants à ces Refs.

Si 2 Refs pointent vers un même Objet ... alors la comparaison de ces 2 Refs (égalité?) donne "True".

 

 

Question :

 

Mes 2 "Obtain Queue" me donne 2 Refs qui pointent vers le même Objet.

Pourquoi la comparaison ce ces 2 Refs ne donne-t-elle pas "True" ???

 

La sorttie " x=y? " est  False !!!

 

Merci à tous.

 

 

SR1.png

0 Compliments
Message 1 sur 3
4 287 Visites

Bonjour Ouadji, 

 

Si le terminal Name est câblé, la fonction Obtain Queue cherche une Queue ayant le même nom et retourne une nouvelle référence vers cette Queue. Pour comparer 2 Queue il vaut mieux utiliser la fonction Get  Queue Status et vérifier si le nom est identique. 

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 2 sur 3
4 273 Visites

Bonjour Benjamin,

merci pour ton intervention.

oui ... une "nouvelle" référence ... pointant sur le "même" Queue.

et si on compare (=?) 2 références pointant sur un même objet, le résultat est "true".
J'ai utilisé cette propriété en scripting dans certains xnode.

Mais je pense avoir trouvé "le pourquoi" ... la doc LV dit :

Equal? Function
When comparing VI Serveur references, this function returns TRUE when the two references refer to the same object ... etc ...

Or, une référence vers une Queue n'est pas une "VI serveur reference".

Je pense que la solution est là.

 

0 Compliments
Message 3 sur 3
4 270 Visites